Question

I am created an instance of gtk.gdk.Pixmap, and painted on it something. For example:

pixmap = gtk.gdk.Pixmap(widget.window,100,800)
pixmap.draw_rectangle(gc, True, 0, 0, 100, 800)
pixmap.draw_line(gc, 0, 0,100, 800)

How can I to resize the Pixmap? One way that I see is to copy the Pixmap into a PixBuf using gtk.gdk.Pixbuf.get_from_drawable, then resize the Pixbuf, and then copy the Pixbuf to the Pixmap

Is there any way to do this without all the copying?

Était-ce utile?

La solution

Unfortunately it's not possible without all this copying. Please note that GdkPixmap and GdkPixbuf are deprecated in favor of Cairo.

Autres conseils

Indeed, those are deprecated.

More importantly, GdkPixmap is a server-side resource - the contents of the pixmap live in the X server's memory. When you do get_from_drawable(), you are asking for those contents to be transferred to your application, which is expensive.

Instead, create a Cairo image suface, and do your drawing there. This is a client-side resource, so you won't get that performance penalty. Image surfaces can be scaled by drawing them to another surface with a suitable transformation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top