在一个窗体上放上一个按纽,在鼠标的移动事件中添加以下代码:
private sub Form1_MouseMove(.....) '记不清了,哈哈
btn1.left=x-btn1.width/2
btn1.top=y-btn1.height/2
end sub
然后运行程序。结果发现按纽边缘剧烈闪烁,而且还有一长串的黑影伴随。
请问各位高手,如何处理才可以让它不再闪烁,而且去掉那令控件魂断梦牵的黑影?
为求明白起见,奢望方家给出个中缘由。
...全文
2575打赏收藏
拖动控件时出现闪烁的问题
在一个窗体上放上一个按纽,在鼠标的移动事件中添加以下代码: private sub Form1_MouseMove(.....) '记不清了,哈哈 btn1.left=x-btn1.width/2 btn1.top=y-btn1.height/2 end sub 然后运行程序。结果发现按纽边缘剧烈闪烁,而且还有一长串的黑影伴随。 请问各位高手,如何处理才可以让它不再闪烁,而且去掉那令控件魂断梦牵的黑影? 为求明白起见,奢望方家给出个中缘由。
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