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

use*_*950 2 python user-interface wxpython image

我正在创建一个照片查看器,用户可以使用它来标记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)
Run Code Online (Sandbox Code Playgroud)

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

那么我如何转换这些wx.GetMousePosition坐标以便它们适合'dc'?关于获得鼠标坐标的任何其他建议?

GP8*_*P89 5

wx.GetMousePosition 将返回屏幕上鼠标的坐标,这些坐标将位于图像中的错误位置,或者可能在您看到的图像边缘之外.

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