Как изменить размер gtk.gdk.Pixmap - PullRequest
0 голосов
/ 10 ноября 2011

Я создал экземпляр 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? Один из способов, который я вижу, это скопировать Pixmap в PixBuf, используя gtk.gdk.Pixbuf.get_from_drawable, затем изменить размер Pixbuf, а затем скопировать Pixbuf в Pixmap

Есть ли способ сделать это без копирования?

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Действительно, они устарели.

Что еще более важно, GdkPixmap является ресурсом на стороне сервера - содержимое растрового изображения хранится в памяти X-сервера. Когда вы выполняете get_from_drawable (), вы запрашиваете передачу этого содержимого в ваше приложение, что дорого.

Вместо этого создайте поверхность изображения Каира и сделайте там свой рисунок. Это клиентский ресурс, поэтому вы не получите такого снижения производительности. Поверхности изображения можно масштабировать, перетаскивая их на другую поверхность с подходящим преобразованием.

1 голос
/ 11 ноября 2011

К сожалению, это невозможно без всего этого копирования.Обратите внимание, что GdkPixmap и GdkPixbuf устарели в пользу Cairo.

...