如何转换 wx.GetMousePosition 坐标以适合 DC

2023-12-21

我正在创建一个照片查看器,用户可以使用它来标记图像,就像在 Facebook 中一样。单击要标记的图像后,我使用 wx.GetMousePosition 查找鼠标在图像上单击的位置。然后,我创建用户已标记的图像的 wx.MemoryDC,以便我可以绘制标记使用 dc.DrawRectangle 在图像上绘制。

下面是在图像上绘图的代码: 顺便说一句,我正在使用 wxPython

        W=495 #Position of mouse (y)
        H=205 #Position of mouse (x)
        dc = wx.MemoryDC()
        dc.SelectObject(bitImg)#name of bitmap image
        dc.SetPen(wx.Pen('#FF0000'))

        #dc.SetBrush(wx.Brush('#aaffff'))
        dc.SetBrush(wx.TRANSPARENT_BRUSH)
        dc.DrawRectangle(W, H, 20, 20)# Drawing the rectangle using the W and H 
                                      # for the position
        dc.SelectObject(wx.NullBitmap)

前两行是我从 wx.GetMousePosition 收到的 X 和 Y 坐标。这是其中一张图像上标签的位置。然而,当我绘制矩形时,这些点 W 和 H 不会显示在图像上,因为它们太大并且不会显示在屏幕上。如果我将 W 和 H 都设置为 90,它将在图像上绘制一个小正方形。

那么如何转换这些 wx.GetMousePosition 坐标,以便它们适合“dc”?或者关于获取鼠标坐标的任何其他建议?


wx.GetMousePosition将返回屏幕上鼠标的坐标,该坐标要么位于图像中的错误位置,要么可能超出您所看到的图像边缘。

转换这些坐标的一种方法是将它们传递到图像所在的面板,panel.ScreenToClient(wx.GetMousePosition())这会将它们转换为相对于面板左上角的坐标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何转换 wx.GetMousePosition 坐标以适合 DC 的相关文章

随机推荐