我有一个图片框,我得到鼠标的当前位置并将它们存储在两个分开的标签中。 我有一个按钮来设置鼠标的新位置,但我得到的位置不正确。
我明白了 x = 399 y = 237
但是当我点击按钮将鼠标位置设置到此位置时,我得到了 x = 175 y = 175
这是我用来获取x和y的代码:
Products.Count = 5;
这是我用来设置鼠标新位置的代码
Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
PPoint = New Point(e.X, e.Y)
Label8.Text = e.X
Label9.Text = e.Y
End Sub
我尝试了不同的方法,但我继续遇到同样的问题。 这是我从Find Mouse Position
尝试的代码答案 0 :(得分:0)
这会在您单击的确切位置放置一个红点。我想知道设置光标位置有多么有用,因为它们几乎肯定会在点击按钮后移动鼠标(无意或无意)。
设置光标位置需要在屏幕坐标中 - 这会转换回客户端坐标以进行绘图。我不相信PointToClient是光标位置所必需的。在下面的代码中,这是一个不必要的转换,因为您只需返回客户端坐标。我把它留下来显示每个转换的示例,以便您可以试验它们。
Public Class Form1
Private PPoint As Point
Public Sub New()
' This call is required by the designer.
InitializeComponent()
PictureBox1.BackColor = Color.White
PictureBox1.BorderStyle = BorderStyle.Fixed3D
AddHandler PictureBox1.MouseClick, AddressOf PictureBox1_MouseClick
AddHandler Button8.Click, AddressOf Button8_Click
' Add any initialization after the InitializeComponent() call.
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs)
Dim g As Graphics = PictureBox1.CreateGraphics()
Dim rect As New Rectangle(PictureBox1.PointToClient(PPoint), New Size(1, 1))
g.DrawRectangle(Pens.Red, rect)
End Sub
Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs)
PPoint = PictureBox1.PointToScreen(New Point(e.X, e.Y))
Label8.Text = PPoint.X.ToString()
Label9.Text = PPoint.Y.ToString()
End Sub
End Class