要用到vb的api函数ClientToScreen,你可以看看这个方面的内容,
10余年建站经验, 做网站、成都网站建设客户的见证与正确选择。创新互联公司提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
这里又一个坐标变换的问题!
控件.location=New Point(X,Y)
X,Y为整数,即控件坐标,原点在窗体左上角
代码就不写了,给你思路,默认左上角是原点,所以x的位置=窗口高度-y.
这样就获得xy
复杂点的办法是重写绘制,绘制十字,
简单点的办法就是十字放到picbox或者image里,然后取中,然后隐藏,确定按钮点击显示,中心位置等于坐标点,然后换算左上角控件位置,然后设置坐标.
在你的窗体代码最顶上(那就第一行吧,其实就是“声明”那里),加入以下代码:
Private Type POINTAPI
x As Long
y As Long
End Type
Public Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Public Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
然后呢,我告诉你取鼠标相对控件位置的方法(注意注意:这里取得的坐标是以像素为单位的!!!而VB默认单位是“缇”即Twips。1像素=15缇):
Dim MousePos As POINTAPI
GetCursorPos MousePos
ClientToScreen 控件名.hWnd, MousePos
完了以后,MousePos.x和MousePos.y就是鼠标相对控件的位置的横纵坐标。去掉“ClientToScreen 控件名.hWnd, MousePos”这句,就是取鼠标在屏幕上的位置。
你原来的代码里有
Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
这个过程。实际上,这里的X和Y是鼠标在容器(控件)内的位置,以“缇”为单位。要转化成像素(Pixel),你得把原坐标的横纵值除以15.
Button1.Location = New Point(100, 100)
或
Button1.Left = 100
Button1.Top = 100
窗体内的左上角的座标为(0,0),向右是.Left+,向左是.Left-,向下是.Top+,向上是.Top-;如果要使用相对座标,比如向右移动100,就可以写成Object.Left=Object.Left+100即可。