我用鼠标移动图片,用IMAGE控件。
但是移动的时候,必须移动到现在的IMAGE控件的区域外。因为鼠标在IMAGE控件上,此时返回不了鼠标这点的坐标。
请问如何来实现呢。
想用鼠标进行随意拖动。
但是移动的时候,必须移动到现在的IMAGE控件的区域外。因为鼠标在IMAGE控件上,此时返回不了鼠标这点的坐标。
请问如何来实现呢。
想用鼠标进行随意拖动。
解决方案 »
- VB调用系统计算器后,怎么让计算器随着系统的关闭而关闭
- 庆祝明天是愚人节,放分!
- 奇怪的vbKeyDivide问题...急...各位救命啊.??
- coolbar 控件picture属性的奇怪问题,无法使用loadpicture动态加载?
- 为何不能改动 DATA REPORT 的WIDTH属性值?
- 如何得到系统信息?请高手帮忙,给点提示也可以!
- 要想用select察看日期字段(time),在2003-6-21之后的应该怎么写?
- 学习VB,是从vb6.0学起,还是从vb.net学起!
- 吉时利2700数据采集程序开发
- mygis's q2) VB中有面版(Panel)吗?我要多个Panel可以在大Panel中可以上下拖动,怎么写?
- 对筛选后的记录集进行排序
- VSFlexGrid怎么实现列模糊查询
setcapture 将鼠标定住
releasecapture 释放
Option ExplicitPrivate Declare Function GetCursorPos Lib "user32" (lpBuffer As Long) As LongPrivate mlDX As Long, mlDY As Long
Private mlMoveFlag As Long
Private cx&, cy&Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = 1) Then
Call GetCursorPos(cx)
mlDX = cx - Image1.Left \ 15
mlDY = cy - Image1.Top \ 15
mlMoveFlag = 1
End If
End SubPrivate Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (mlMoveFlag = 1) Then
Call GetCursorPos(cx)
Image1.Left = (cx - mlDX) * 15
Image1.Top = (cy - mlDY) * 15
End If
End SubPrivate Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
mlMoveFlag = 0
End Sub
还有一种方式,就是“网格”对齐。当然,这个网格是不可见的。比如,你将网格定义为纵横间距均为 10 倍像素或你为 Form 定义的其他 Scale 单位。每当你拖放后,都向最近的网格对齐。具体到上述的例子,Left 或 Top 值个位小于 5 的舍弃个位,大于 5 的加 5 后舍弃个位。
我这里所指的拖动,就是程序运行后,我有两个IMAGE的控件,想通过鼠标拖动,把两个控件对齐。
现在拖动后,两个控件的LEFT和TOP都还是有差距,看起来都没有对齐。
求详细,谢谢!
你的窗口布局以及你究竟是怎样个操作法,或者源码不放出来,我们怎么知道如何去解决。
老是把别人当神仙一样的看待。