加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[VB.NET]反弹球

发布时间:2020-12-16 23:56:41 所属栏目:大数据 来源:网络整理
导读:反弹球 实例说明 在本实例中,我们制作一个反弹球的应用程序,当球到达边缘后,则自动弹回。程序运行结果如图85-1所示。 图85-1 运行结果 技术要点 l Timer控件 l 改变图形位置 l 判断是否到达边界 实现过程 ■ 新建项目 打开Visual Studio.NET,选择"新建项
反弹球

实例说明

在本实例中,我们制作一个反弹球的应用程序,当球到达边缘后,则自动弹回。程序运行结果如图85-1所示。

图85-1 运行结果

技术要点

l Timer控件

l 改变图形位置

l 判断是否到达边界

实现过程

■ 新建项目

打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中,选择"Windows应用程序",在名称域中输入"RebouncePic",然后选择保存路径。单击"确认"。

■ 添加控件

向窗体上添加一个Timer控件、一个Button控件和一个Picture控件。

■ 设置属性

对窗体和窗体上的控件设置属性,如表85-1所示。

表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控件的位置,当到达边界后,立刻变换方向。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读