如何改变gtk.gdk.Pixmap的大小
我创建了一个 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
的大小呢?我看到的一种方法是先使用 gtk.gdk.Pixbuf.get_from_drawable
把 Pixmap
复制到一个 PixBuf
中,然后调整这个 Pixbuf
的大小,最后再把调整好的 Pixbuf
复制回 Pixmap
。
有没有什么方法可以不进行这些复制操作就直接调整大小呢?
2 个回答
1
确实,这些已经不再推荐使用了。
更重要的是,GdkPixmap 是一种服务器端的资源——它的内容存储在 X 服务器的内存中。当你使用 get_from_drawable() 时,你是在请求把这些内容转移到你的应用程序中,这个过程是比较耗费资源的。
相反,你可以创建一个 Cairo 图像表面,然后在上面进行绘图。这是一个客户端资源,所以你不会遭遇性能上的损失。图像表面可以通过将它们绘制到另一个表面上,并进行适当的变换来进行缩放。
1
很遗憾,这个操作是无法做到的,除非你进行很多复制。请注意,GdkPixmap 和 GdkPixbuf 已经不再推荐使用,取而代之的是 Cairo。