如何改变gtk.gdk.Pixmap的大小

0 投票
2 回答
634 浏览
提问于 2025-04-17 06:01

我创建了一个 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_drawablePixmap 复制到一个 PixBuf 中,然后调整这个 Pixbuf 的大小,最后再把调整好的 Pixbuf 复制回 Pixmap

有没有什么方法可以不进行这些复制操作就直接调整大小呢?

2 个回答

1

确实,这些已经不再推荐使用了。

更重要的是,GdkPixmap 是一种服务器端的资源——它的内容存储在 X 服务器的内存中。当你使用 get_from_drawable() 时,你是在请求把这些内容转移到你的应用程序中,这个过程是比较耗费资源的。

相反,你可以创建一个 Cairo 图像表面,然后在上面进行绘图。这是一个客户端资源,所以你不会遭遇性能上的损失。图像表面可以通过将它们绘制到另一个表面上,并进行适当的变换来进行缩放。

1

很遗憾,这个操作是无法做到的,除非你进行很多复制。请注意,GdkPixmap 和 GdkPixbuf 已经不再推荐使用,取而代之的是 Cairo。

撰写回答