实例说明
在本实例中,我们制作一个反弹球的应用程序,当球到达边缘后,则自动弹回。程序运行结果如图85-1所示。
图85-1 运行结果
技术要点
l Timer控件
l 改变图形位置
l 判断是否到达边界
实现过程
■ 新建项目
打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中,选择"Windows应用程序",在名称域中输入"RebouncePic",然后选择保存路径。单击"确认"。
■ 添加控件
向窗体上添加一个Timer控件、一个Button控件和一个Picture控件。
■ 设置属性
对窗体和窗体上的控件设置属性,如表85-1所示。
窗体/控件 属性 值
Form1 Text 反弹球
Timer1 Interval 1
Picture1 Name PicBall
Image C:/windwos/ball.bmp
Button Text 开始演示
Dim Motion As Short
Private Sub Command1_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Command1.Click
If Command1.Text = "开始演示" Then
Command1.Text = "停止演示"
Timer1.Enabled = True
Else
Command1.Text = "开始演示"
Timer1.Enabled = False
End If
End Sub
Private Sub CtlMoveDemo()
Select Case Motion
Case 1
picBall.SetBounds(picBall.Left - 2,picBall.Top - 2,Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
' 如果图形到达左边界,则向右移动
If VB6.PixelsToTwipsX(picBall.Left) <= 0 Then
Motion = 2
'如果图形到达上边界,则向下移动
ElseIf VB6.PixelsToTwipsY(picBall.Top) <= 0 Then
Motion = 4
End If
Case 2
picBall.SetBounds(picBall.Left + 2,Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
'如果图形到达右边界,则向左移动
If picBall.Left >= (Form1.DefInstance.Width - picBall.Width) Then
Motion = 1
'如果图形到达上边界,则向下移动
ElseIf picBall.Top <= 0 Then
Motion = 3
End If
Case 3
picBall.SetBounds(picBall.Left + 2,picBall.Top + 2,Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
If picBall.Left >= (Form1.DefInstance.Width - picBall.Width) Then
Motion = 4
ElseIf picBall.Top >= (Form1.DefInstance.Height - picBall.Height) - 20 Then
Motion = 2
End If
Case 4
picBall.SetBounds(picBall.Left - 2,Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)
If picBall.Left <= 0 Then
Motion = 3
ElseIf picBall.Top >= (Form1.DefInstance.Height - picBall.Height) - 20 Then
Motion = 1
End If
End Select
End Sub
Private Sub Form1_Load(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = False
Motion = 1
End Sub
Private Sub Timer1_Tick(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
CtlMoveDemo()
End Sub
■ 运行程序
单击菜单"调试|启动" 或单击图标运行程序。
小结
本实例通过使用Timer控件来不断更改Picture控件的位置,当到达边界后,立刻变换方向。
原文链接:https://www.f2er.com/vb/264279.html