2012-07-01 1 views
1

나는 페이스 북과 같이 이미지에 태그를다는 데 사용할 수있는 사진 뷰어를 만들고 있습니다. 이미지를 클릭하여 태그 지정을하면 wx.GetMousePosition을 사용하여 이미지에서 마우스가 클릭 된 위치를 찾습니다. 그런 다음 태그가있는 이미지의 wx.MemoryDC를 만들어 태그를 그릴 수있게합니다. dc.DrawRectangle를 사용하여 이미지에.wx.GetMousePosition 좌표를 DC에 맞게 변환하는 방법

는 아래 이미지에 그리기 코드입니다 : 내가

 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 좌표있는 방법으로 wxPython을 사용하고 있습니다. 이것은 이미지 중 하나의 태그 위치입니다. 그러나이 점 W와 H는 사각형이 너무 크고 화면에 표시되지 않기 때문에 사각형을 그릴 때 이미지에 표시되지 않습니다. W와 H를 모두 90으로 설정하면 이미지에 작은 사각형이 그려집니다.

그렇다면이 wx.GetMousePosition 좌표를 'dc'에 맞게 변환하려면 어떻게해야합니까? 또는 마우스 좌표를 가져 오는 것에 대한 다른 제안 사항이 있습니까?

+0

@Mike Driscoll – user1401950

답변

4

wx.GetMousePosition은 화면상의 마우스 좌표를 반환합니다.이 좌표는 이미지의 잘못된 위치에 있거나, 이미지의 가장자리에서 벗어날 가능성이 있습니다.

이러한 좌표를 변환 할 수있는 방법 중 하나는 이미지가있는 패널 panel.ScreenToClient(wx.GetMousePosition())에 전달하여 패널의 왼쪽 상단을 기준으로 좌표로 변환하는 것입니다.

관련 문제