Bonjour, je souhaite afficher un texte verticalement dans une drawing area.

J'ai opté pour une solution "bricolage" : créer un pixmap à part, écrire le texte dedans, récupérer le pixbuf, faire une rotation, dessiner le pixbuf dans ma drawing area. cela sonne ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
            GdkPixmap* pxm = gdk_pixmap_new(NULL,30,30,24);
            GdkGC* GC = gdk_gc_new(GDK_DRAWABLE(pxm));
 
            gdk_draw_string(GDK_DRAWABLE(pxm),font, GC,10,10,"0k");//mon texte = Ok
 
            GdkPixbuf* pxb = gdk_pixbuf_get_from_drawable(NULL,GDK_DRAWABLE(pxm),gdk_drawable_get_colormap(GDK_DRAWABLE(pxm)),0,0,0,0,30,30);
 
            //rotation
            pxb = gdk_pixbuf_rotate_simple(pxb,GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE);
 
            gdk_draw_pixbuf(GDK_DRAWABLE(Pixmap), gc,pxb,0,0,100,100,30,30,GDK_RGB_DITHER_MAX,0,0); //Pixmap et gc = drawing area
 
            gdk_pixmap_unref(pxm);
            gdk_gc_unref(GC);
            gdk_pixbuf_unref(pxb);
Comme résultat, je vois bien le texte vertical, mais tout barré par des hachures, trucs noirs...

Qu'est-ce qui ne va pas ? Je me doute que mon code n'est pas très propre. Je souhaiterais eviter de passer par Cairo.

merci