欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实例115百叶窗效果

程序员文章站 2022-06-01 16:55:19
...

Graphics.DrawImage 方法

https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.graphics.drawimage?view=dotnet-plat-ext-3.1#System_Drawing_Graphics_DrawImage_System_Drawing_Image_System_Drawing_PointF___

DrawImage(Image, Point)

在指定的位置使用原始物理大小绘制指定的 Image

DrawImage(Image, Rectangle, Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。  

第一个参数是要绘制的图像;

第二个参数是要绘制图像的指定目标区域:

第三个参数要绘制的源图像的指定部分:

第四个参数为图像最单位。

 实例115百叶窗效果

Public Class Form1
    Dim pic As Image
    Dim myGraph As Graphics

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myGraph = PictureBox1.CreateGraphics
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        dlgOpen.Filter = "图片文件|*.bmp;jpg|所有文件|*.*"
        If dlgOpen.ShowDialog = DialogResult.OK Then
            pic = Image.FromFile(dlgOpen.FileName)
            myGraph.DrawImage(pic, New Point(0, 0))
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Start()

    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.Close()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        PictureBox1.Image = Nothing
        Dim picLine As Integer = 0
        Dim h As Integer = 10
        Dim desRect As New Rectangle
        Dim srcRect As New Rectangle
        Dim i As Long
        Dim lnNum As Integer
        For lnNum = 0 To 38 Step 2
            With srcRect
                .X = 0
                .Y = lnNum * h
                .Width = pic.Width
                .Height = h
            End With

            With desRect
                .X = 0
                .Y = lnNum * Me.PictureBox1.Height / 40
                .Width = PictureBox1.Width
                .Height = PictureBox1.Height / 40
            End With

            myGraph.DrawImage(pic, desRect, srcRect, GraphicsUnit.Pixel)

            '延时
            For i = 0 To 10000000
            Next
        Next

        For lnNum = 1 To 39 Step 2
            With srcRect
                .X = 0
                .Y = lnNum * h
                .Width = pic.Width
                .Height = h
            End With

            With desRect
                .X = 0
                .Y = lnNum * Me.PictureBox1.Height / 40
                .Width = PictureBox1.Width
                .Height = PictureBox1.Height / 40
            End With

            myGraph.DrawImage(pic, desRect, srcRect, GraphicsUnit.Pixel)

            '延时
            For i = 0 To 10000000
            Next
        Next
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Timer1.Stop()
    End Sub
End Class