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)

最初の2行は、wx.GetMousePositionから受け取ったX座標とY座標です。これは、画像の1つにあるタグの位置です。ただし、これらの点WとHは大きすぎて画面に表示されないため、長方形を描画すると画像に表示されません。WとHの両方を90に設定すると、画像上に小さな正方形が描画されます。

では、これらのwx.GetMousePosition座標を「dc」に収まるように変換するにはどうすればよいですか?または、マウスの座標を取得するための他の提案はありますか?

4

1 に答える 1

5

wx.GetMousePosition画面上のマウスの座標を返します。これは、画像内の間違った場所にあるか、表示されている画像の端から外れている可能性があります。

これらの座標を変換する1つの方法は、画像が表示されているパネルにそれらを渡すことですpanel.ScreenToClient(wx.GetMousePosition())。これにより、パネルの左上を基準にした座標に変換されます。

于 2012-07-01T22:17:55.140 に答える