2009-05-11 10 views

Répondre

1

Je suis d'accord avec Al - il mérite la réponse, mais ce fragment de code (il est vrai non testé) devrait faire ce que vous avez demandé:

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) 

Une chose à noter que de the docs:

... en utilisant wxImage est le moyen préféré pour charger des images dans wxWidgets, à l'exception des ressources ...

Y at-il un particulier raison de le charger comme un bitmap plutôt qu'un wx.Image?

+0

J'ai besoin de dessiner à l'écran, et le document wx.Image dit que je vais devoir le convertir en bitmap avant que je puisse le dessiner. –

+0

Après un peu de réparation, votre code a fonctionné. –

+0

Pouvez-vous publier le résultat fixe vous-même ou suggérer ce que vous avez fait pour corriger ce qui précède pour améliorer l'exemple? –

2

Je ne suis pas sûr que ce soit la meilleure façon de le faire, mais une option serait de le convertir en un wx.Image avec ConvertToImage (wxWidgets help), puis utilisez la fonction rotate (wxWidgets help). Vous pouvez ensuite (si nécessaire) le convertir avec ConvertToBitmap (wxWidgets help).

Je ne pouvais pas voir une fonction évidente qui pourrait être utilisée pour appliquer un coordinate transform au contexte de dessin (DC), mais il peut y avoir un là quelque part ...

espoir qui aide.

1

Une meilleure façon serait d'utiliser le contexte graphique si vous voulez une rotation générique, par ex. Rotation bitmap ou texte ou tout autre chemin de dessin

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

Cela semblait prometteur, mais GCDC ne semble pas avoir une méthode 'Rotate'! –

+0

quelle version et quelle plate-forme utilisez-vous? wxPython doc dit qu'il a Rotation et je l'utilise fortement http://www.wxpython.org/docs/api/wx.GraphicsContext-class.html#Rotate –

+0

Je suis confus. Check this out: http://www.wxpython.org/docs/api/wx.GCDC-class.html Quel est le lien entre GraphicsContext et GCDC? –

Questions connexes