📄 form1.vb
字号:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
Friend WithEvents Timer1 As System.Windows.Forms.Timer
Friend WithEvents Panel1 As System.Windows.Forms.Panel
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem5 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.Panel1 = New System.Windows.Forms.Panel
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.MainMenu1 = New System.Windows.Forms.MainMenu
Me.MenuItem1 = New System.Windows.Forms.MenuItem
Me.MenuItem2 = New System.Windows.Forms.MenuItem
Me.MenuItem5 = New System.Windows.Forms.MenuItem
Me.MenuItem3 = New System.Windows.Forms.MenuItem
Me.SuspendLayout()
'
'Panel1
'
Me.Panel1.Location = New System.Drawing.Point(16, 16)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(392, 240)
Me.Panel1.TabIndex = 0
'
'Timer1
'
Me.Timer1.Interval = 200
'
'MainMenu1
'
Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})
'
'MenuItem1
'
Me.MenuItem1.Index = 0
Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem5, Me.MenuItem3})
Me.MenuItem1.Text = "操作"
'
'MenuItem2
'
Me.MenuItem2.Index = 0
Me.MenuItem2.Text = "百叶窗效果"
'
'MenuItem5
'
Me.MenuItem5.Index = 1
Me.MenuItem5.Text = "-"
'
'MenuItem3
'
Me.MenuItem3.Index = 2
Me.MenuItem3.Text = "退出"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(424, 293)
Me.Controls.Add(Me.Panel1)
Me.Menu = Me.MainMenu1
Me.Name = "Form1"
Me.Text = "百叶窗效果"
Me.ResumeLayout(False)
End Sub
#End Region
'记录Timer控件被激发的次数
Dim times As Integer = 0
'记录各线条产生的时间
Dim h, w As Integer
Dim img As Image
Dim bmp1 As Bitmap
Dim bmp2 As Bitmap
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Me.FormBorderStyle = FormBorderStyle.Fixed3D
Panel1.Dock = DockStyle.Fill
Panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
h = Me.Height
w = Me.Width
'从硬盘上获取图片
img = Image.FromFile("..\image.bmp")
Dim backimage As Bitmap
backimage = New Bitmap(img, w, h)
Panel1.BackgroundImage = backimage
End Sub
Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
Dim g As Graphics = e.Graphics
Dim tc As Color = New Color
'获取绘图环境
bmp1 = New Bitmap(img, w, h)
'创建一个与bmp1同样大小的空位图
bmp2 = New Bitmap(w, h)
Dim i, j, k As Integer
For i = 0 To 10
'表示分6次刷新
'每次只画出整个图片的1/6
For j = i To h - 1 Step 10
For k = 0 To w - 1
'获取bmp1指定位置处像素的颜色
'k,j为横、纵坐标
tc = bmp1.GetPixel(k, j)
'在bmp2相同的位置绘制同样颜色的一个像素
bmp2.SetPixel(k, j, tc)
Next
Next
'在Panel1上绘制bmp2
g.DrawImage(bmp2, 0, 0)
'延迟一定时间,再进行下一次刷新
delay()
Next
bmp2 = New Bitmap(w, h)
End Sub
Private Sub delay()
Dim i As Integer
For i = 0 To 1000000
If i < 1000000 Then
End If
Next
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Panel1.Invalidate()
End Sub
Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Me.Panel1.BackgroundImage = Nothing
Timer1.Interval = 2800
Panel1.Dock = DockStyle.Fill
Panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Panel1.Invalidate()
End Sub
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
End
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -