拖动控件时出现闪烁的问题

power_hust 2002-11-04 08:31:03
在一个窗体上放上一个按纽,在鼠标的移动事件中添加以下代码:
private sub Form1_MouseMove(.....) '记不清了,哈哈
btn1.left=x-btn1.width/2
btn1.top=y-btn1.height/2
end sub
然后运行程序。结果发现按纽边缘剧烈闪烁,而且还有一长串的黑影伴随。
请问各位高手,如何处理才可以让它不再闪烁,而且去掉那令控件魂断梦牵的黑影?
为求明白起见,奢望方家给出个中缘由。
...全文
257 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
carefulman 2002-11-05
  • 打赏
  • 举报
回复
这是我写的一个移动的例子,点击鼠标开始移动,放开停止,希望对你有帮助
'在窗体上放置一个COMMAND作为拖动对象

Option Explicit
Dim Flag As Boolean '拖动标志
Dim oldx, oldx1, oldy1, oldy As Double '记录原来的坐标

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'开始拖动
Flag = True
'记录下应该绘图的左上角坐标
oldx = Command1.Left
oldy = Command1.Top
'在控件内部的位置
oldx1 = X
oldy1 = Y
Form1.DrawMode = 6
Form1.DrawStyle = 2
'绘制一个拖动的虚线框
Form1.Line (oldx, oldy)-(oldx + Command1.Width, oldy + Command1.Height), , B
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Flag = False Then
Exit Sub
End If
'首先消除原先的边框
Form1.DrawMode = 6
Form1.DrawStyle = 2
Form1.Line (oldx, oldy)-(oldx + Command1.Width, oldy + Command1.Height), , B
'计算新的虚线框位置
oldx = Command1.Left - oldx1 + X
oldy = Command1.Top + Y - oldy1
'重新绘制拖动位置
Form1.Line (oldx, oldy)-(oldx + Command1.Width, oldy + Command1.Height), , B
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Flag = False Then Exit Sub
'消除最后的边框
Form1.Line (oldx, oldy)-(oldx + Command1.Width, oldy + Command1.Height), , B
Command1.Move oldx, oldy
'不让控件被别的东西遮住
Command1.ZOrder 0
'不能跑出窗体
If oldx < 0 Then
Command1.Move 0, oldy
oldx = 0
End If
If oldx > (Form1.ScaleWidth - Command1.Width) Then
Command1.Move Me.ScaleWidth - Command1.Width, oldy
oldx = Me.ScaleWidth - Command1.Width
End If
If oldy < 0 Then
Command1.Move oldx, 0
oldy = 0
End If
If oldy > (Form1.ScaleHeight - Command1.Height) Then
Command1.Move oldx, Me.ScaleHeight - Command1.Height
oldy = Me.ScaleHeight - Command1.Height
End If

'结束拖动
Flag = False
End Sub
Sean918 2002-11-04
  • 打赏
  • 举报
回复
顺便问一句,移动的时候如何能让它连贯?

就算用SendMessage去移动也会有停顿,怎么解决比较好?
power_hust 2002-11-04
  • 打赏
  • 举报
回复
好,试试看先。
Sean918 2002-11-04
  • 打赏
  • 举报
回复
zyl910(910:分儿,我来了!) ,哈哈。。。难得看见你马虎写的东西阿

zyl910 2002-11-04
  • 打赏
  • 举报
回复
btn1.Move x-btn1.width/2, y-btn1.height/2

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧