2

我正在创建一个照片查看器,用户可以使用它来标记 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”?或有关获取鼠标坐标的任何其他建议?

4

1 回答 1

5

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

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

于 2012-07-01T22:17:55.140 回答