从最后一个位置设置鼠标位置不正确vb net

时间:2017-12-29 14:01:57

标签: vb.net

我有一个图片框,我得到鼠标的当前位置并将它们存储在两个分开的标签中。 我有一个按钮来设置鼠标的新位置,但我得到的位置不正确。

我明白了 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

尝试的代码

1 个答案:

答案 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