如何绘制在wxPython中旋转的位图?

时间:2009-05-11 11:44:17

标签: graphics wxpython

如何将位图绘制到DC,同时将其旋转指定的角度?

3 个答案:

答案 0 :(得分:2)

我不确定这是做到这一点的最好方法,但一种选择是将其转换为带有ConvertToImagewxWidgets help)的wx.Image,然后使用{{ 3}} function(rotate)。然后,您可以(如有必要)使用wxWidgets helpConvertToBitmap)将其转换回来。

我看不到可用于将wxWidgets help应用于绘图上下文(DC)的明显函数,但某处某处可能有...

希望有所帮助。

答案 1 :(得分:1)

我同意Al - 他应该得到答案,但是这个(公认的未经测试的)代码片段应该按照你的要求行事:

def write_bmp_to_dc_rotated( dc, bitmap, angle ):
    '''
    Rotate a bitmap and write it to the supplied device context.
    '''
    img = bitmap.ConvertToImage()
    img_centre = wx.Point( img.GetWidth()/2, img.GetHeight()/2 )
    img = img.Rotate( angle, img_centre )
    dc.WriteBitmap( img.ConvertToBitmap(), 0, 0 )

有一点需要注意,the docs

  

...使用wxImage是在wxWidgets中加载图像的首选方式,但资源除外......

是否有特殊原因将其加载为位图而不是wx.Image?

答案 2 :(得分:1)

更好的方法是使用图形上下文,如果你想要一般的轮换,例如旋转位图或文本或任何其他绘图路径

gc = wx.GCDC(dc)
gc.Rotate(angle)
gc.DrawText("anurag", 100, 100)