如何转换wx.GetMousePosition坐标,可安装在DC(How to convert wx

2019-09-18 22:41发布

我创建,用户可以用它来标记相似图片Facebook的照片浏览器。 一旦图像点击被标记,我用wx.GetMousePosition寻找到被点击的image.I鼠标然后创建图像的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)

前两行是X和Y坐标是我从wx.GetMousePosition接收。 这是一个标签上的图像的一个位置。 这些点W和H但是不要在图像上显示,当我绘制矩形,因为它们太大了,不显示在屏幕上。 如果我设置W和H既90将在图像上画出一个小广场。

那么,如何将这些wx.GetMousePosition坐标,使他们适合在“DC”? 或获得鼠标坐标任何其他建议?

Answer 1:

wx.GetMousePosition将在屏幕,要么是在图像在错误的地方,否则容易掉图像的边缘,你会看到在返回坐标为鼠标。

你可以将这些坐标的一种方法是将它们传递给面板上的图像上, panel.ScreenToClient(wx.GetMousePosition())将它们转换成相对坐标到面板的左上角。



文章来源: How to convert wx.GetMousePosition co-ordinates to fit in a DC