нарисовать изображение на gtk.DrawingArea? - PullRequest
2 голосов
/ 27 ноября 2011

Я пишу программу рисования PyGtk на основе базового учебного пособия, найденного здесь .

Есть ли способ добавить изображение в область рисования, чтобы вы могли рисовать поверх изображения? Например, штамп или импортированная фотография. Я пытался добавить gtk.Image(), но gtk.DrawingArea объект не имеет атрибута add.

self.window = gtk.Window((gtk.WINDOW_TOPLEVEL))
self.window.set_title ("Canvas")
self.window.set_position(gtk.WIN_POS_CENTER)
hbox = gtk.HBox(False, 0)
self.window.add(hbox)
self.window.set_resizable(False)

# Create the drawing area
drawing_area = gtk.DrawingArea()
drawing_area.set_size_request(screenWidth-350, screenHeight-100)
hbox.pack_start(drawing_area, True, True, 0)
drawing_area.show()

1 Ответ

4 голосов
/ 27 ноября 2011

Вы должны нарисовать изображение (как gtk.gdk.Pixbuf, а не gtk.Image) на растровом растровом изображении самостоятельно, используя gtk.gdk.Drawable.draw_pixbuf(). Только контейнерные виджеты (виджеты, которые могут содержать другие виджеты) имеют метод add(), а gtk.DrawingArea не один.

pixbuf = gtk.gdk.pixbuf_new_from_file(image_filename) #one way to load a pixbuf
pixmap.draw_pixbuf(None, pixbuf, 0, 0, x, y, -1, -1, gtk.gdk.RGB_DITHER_NONE, 0, 0)
...