我想产生这样的效果,就是随着我鼠标的移动,有一个长方形跟着移动,可是像我下面这么写代码,屏幕会闪的很厉害,怎么解决呢?谢谢各位.Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.Cls
DoEvents
Dim a As Double
For a = X To X + 1 Step 0.001' 这里不用0.001的话,出来的效果,就是一条一条的
'之所以用这个,不用line,,bf的办法,因为我有时候不是长方形
Picture1.Line (a, 0)-(a, 10) '而是一个任意形状,但是这个形状和鼠标的坐标(X,Y)有关系的
Next a
End Sub
Picture1.Cls
DoEvents
Dim a As Double
For a = X To X + 1 Step 0.001' 这里不用0.001的话,出来的效果,就是一条一条的
'之所以用这个,不用line,,bf的办法,因为我有时候不是长方形
Picture1.Line (a, 0)-(a, 10) '而是一个任意形状,但是这个形状和鼠标的坐标(X,Y)有关系的
Next a
End Sub
解决方案 »
- FpSpread中怎么获取scrollbar的相关属性?
- VB 关于AcroPDF控件
- 怎样向数据库中插入数据?急!!!提示出错!?
- 到我的BLOG来听听音乐吧:) ~~ http://blog.csdn.net/acev
- lonelinessboy(寂寞男孩) :
- 大侠,救命呀
- 请问who知道,如何将一个程序如何加入win2000的“服务”里。谢谢
- 有两个问题,高手请进
- 旧贴重提:VB里的VScroll上的那一闪一闪的是什么?(前20人有分)
- **********ADO打开一个连接后将其CLOSE,为何再次OPEN时报错?*******来者有分
- 设计类模块时DataSourceBehavior属性具体实现什么功能?
- 怎么在VB下实现发送手机短信
Dim mx As Single, my As Single, flag As Integer 'mx,my为线段的起点位置(x,y)
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mx = X
my = Y
flag = 1
Picture1.MousePointer = 2
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If flag = 1 Then
Picture1.Cls
Picture1.Line (mx, my)-(X, Y), , B
End If
End SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
flag = 0
Picture1.MousePointer = 0
End Sub我的建议就是避免循环,直接使用line函数,如果需要画其它的图案,可以定义一个模块级变量,在Picture1_MouseMove根据该变量的值画图类似这样
dim p as integer
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If flag = 1 Then
Select Case p
Case 0
.....
Case 1
....
Case 2
....
Case 3
....
End Select
End If
End Sub
用循环即使借助hdc,虽说避免闪烁,但速度应该会慢
试试API函数
不咋地啊,rainstormmaster(rainstormmaster)的还是会闪的!我建议用设置一个PictureBox控件作为"缓存",先在上面画,然后用Bitblt贴图,保证不闪!!等我写代码先,好久不编了...
回复人: bcmhts(风) ( ) 信誉:100 2003-12-17 18:44:00 得分:0
如果你用PICTURE控件进行动画设计,无论怎么设计,都会闪。
试试API函数
----------------
可以不用APi,一样不
liyan010方法很通用,不过在这里有点牛刀了