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'?关于获得鼠标坐标的任何其他建议?
wx.GetMousePosition 将返回屏幕上鼠标的坐标,这些坐标将位于图像中的错误位置,或者可能在您看到的图像边缘之外.
转换这些坐标的一种方法是将它们传递给图像所在的面板,panel.ScreenToClient(wx.GetMousePosition())这将把它们转换为相对于面板左上角的坐标.