我正在创建一个照片查看器,用户可以使用它来标记图像,就像在 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(使用前将#替换为@)