0

我创建了一个实例gtk.gdk.Pixmap,并在上面画了一些东西。例如:

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)

我怎样才能调整大小Pixmap?我看到的一种方法是将 复制PixmapPixBufusing gtk.gdk.Pixbuf.get_from_drawable,然后调整大小Pixbuf,然后复制PixbufPixmap

有没有办法在没有所有复制的情况下做到这一点?

4

2 回答 2

1

不幸的是,没有所有这些复制是不可能的。请注意,不推荐使用 GdkPixmap 和 GdkPixbuf 以支持 Cairo。

于 2011-11-11T07:15:07.720 回答
1

确实,这些已被弃用。

更重要的是,GdkPixmap 是一种服务器端资源——像素图的内容存在于 X 服务器的内存中。当您执行 get_from_drawable() 时,您要求将这些内容传输到您的应用程序,这很昂贵。

相反,创建一个 Cairo 图像表面,并在那里进行绘图。这是一个客户端资源,因此您不会受到性能损失。图像表面可以通过将它们绘制到具有适当变换的另一个表面来进行缩放。

于 2011-11-11T22:51:29.750 回答