Как нарисовать растровое изображение, повернутое в wxPython? - PullRequest
2 голосов
/ 11 мая 2009

Как нарисовать растровое изображение на DC, поворачивая его на заданный угол?

Ответы [ 3 ]

2 голосов
/ 11 мая 2009

Я не уверен, что это лучший способ сделать это, но один из вариантов - преобразовать его в wx.Image с ConvertToImage ( wxWidgets help ) и затем используйте функцию rotate ( wxWidgets help ). Затем можно (при необходимости) преобразовать его обратно с помощью ConvertToBitmap ( wxWidgets help ).

Я не мог видеть очевидную функцию, которую можно использовать для применения преобразования координат к контексту рисования (DC), но где-то там может быть одна ...

Надеюсь, это поможет.

1 голос
/ 17 мая 2009

Лучше было бы использовать графический контекст, если вы хотите общий поворот, например, повернуть растровое изображение или текст или любой другой путь рисования

gc = wx.GCDC(dc)
gc.Rotate(angle)
gc.DrawText("anurag", 100, 100) 
1 голос
/ 11 мая 2009

Я согласен с Алом - он заслуживает ответа, но этот (предположительно непроверенный) фрагмент кода должен делать то, что вы просили:

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 )

Что следует отметить из документов :

... использование wxImage является предпочтительным способом загрузки изображений в wxWidgets, за исключением ресурсов ...

Была ли особая причина загружать его как растровое изображение, а не как wx.Image?

...