VFP循环结构 表单设计 图像运动
在表单上添加一个图像控件(图片文件自定),点击“开始”按钮,图象开始向左运动,当图像左边界到达表单左边界时,图像从表单底部进入向上运动,当图像上边界到达表单顶部时,图像从...
在表单上添加一个图像控件(图片文件自定),点击“开始”按钮,图象开始向左运动,当图像左边界到达表单左边界时,图像从表单底部进入向上运动,当图像上边界到达表单顶部时,图像从表单右边界开始向左运动,点击“停止”按钮,图像停止运动。
展开
1个回答
展开全部
使用时钟控件,移动速度由时钟控件 Interval 属性控制
使用 image 控件的 Tag 属性记录当前移动方向
表单 Init
thisform.Image.Tag = "←" && 设置默认向左
开始按钮 Click:
thisform.Timer1.Enabled = .T. && 开启时钟
停止按钮 Click:
thisform.Timer1.Enabled = .F. && 停止时钟
thisform.Image.Tag = "←" && 恢复默认向左
时钟控件 Timer:
DO CASE
CASE thisform.Image1.Tag = "→"
IF thisform.Image1.Left <= 0
&& 到达表单左边界
thisform.Image1.Tag = "↑" && 转为向上运动
thisform.Image1.Top = thisform.Height - thisform.mage1.Height && 图像闪到左下角
ELSE
thisform.Image1.Left = thisform.Image1.Left - 1 && 左移
ENDIF
CASE thisform.Image1.Tag = "←"
&& ....【你先思考下】
CASE thisform.Image1.Tag = "↑"
&&.....【你先思考下】
ENDCASE
使用 image 控件的 Tag 属性记录当前移动方向
表单 Init
thisform.Image.Tag = "←" && 设置默认向左
开始按钮 Click:
thisform.Timer1.Enabled = .T. && 开启时钟
停止按钮 Click:
thisform.Timer1.Enabled = .F. && 停止时钟
thisform.Image.Tag = "←" && 恢复默认向左
时钟控件 Timer:
DO CASE
CASE thisform.Image1.Tag = "→"
IF thisform.Image1.Left <= 0
&& 到达表单左边界
thisform.Image1.Tag = "↑" && 转为向上运动
thisform.Image1.Top = thisform.Height - thisform.mage1.Height && 图像闪到左下角
ELSE
thisform.Image1.Left = thisform.Image1.Left - 1 && 左移
ENDIF
CASE thisform.Image1.Tag = "←"
&& ....【你先思考下】
CASE thisform.Image1.Tag = "↑"
&&.....【你先思考下】
ENDCASE
更多追问追答
追问
并没有用到循环结构呀,都是选择结构
追答
为什么非要 DO WHILE 才叫循环呢?时钟控件本身就是循环了嘛,每隔 s 时间做一堆东东,不算是循环?当然,用 DO WHILE 做也可......
表单 Init
thisform.Image.Tag = "←" && 设置默认向左
thisform.Tag = "Stop" && 设置当前循环状态
开始按钮 Click:
thisform.Tag = "Run" 设置运行标志
DO WHILE .T.
IF thisform.Tag = "Stop" && 如果出现停止标志,退出循环
EXIT
ENDIF
DO CASE
CASE thisform.Image1.Tag = "→"
IF thisform.Image1.Left <= 0
&& 到达表单左边界
thisform.Image1.Tag = "↑" && 转为向上运动
thisform.Image1.Top = thisform.Height - thisform.mage1.Height && 图像闪到左下角
ELSE
thisform.Image1.Left = thisform.Image1.Left - 1 && 左移
ENDIF
CASE thisform.Image1.Tag = "←"
&& ....【你先思考下】
CASE thisform.Image1.Tag = "↑"
&&.....【你先思考下】
ENDCASE
WAIT "" TIMEOUT 0.5 && 延时 0.5 秒
DODEFAULT() 让 WINDOWS 处理一下其他事情,不至于被 DO WHILE 锁住
ENDDO
停止按钮 Click:
thisform.Tag = "Stop" && 设置停止标志
thisform.Image.Tag = "←" && 恢复默认向左
&& 看看其中分别....
东莞大凡
2024-08-07 广告
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询