Как изменить размер gtk.gdk.Pixmap

#python #pygtk #gtk #gdk #gdkpixbuf

#python #pygtk #gtk #gdk #gdkpixbuf

Вопрос:

Я создал экземпляр 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

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

Ответ №1:

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

Ответ №2:

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

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

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

Комментарии:

1. Круто, я на самом деле не знал, что копирование включает в себя цикл сервер-клиент.