如何从Gtk.DrawingArea获取像素?

时间:2015-04-05 22:06:57

标签: python gtk3

我正在写一个像应用程序一样的简单画面:

#!/usr/bin/env python3

from gi.repository import Gtk


class Application(Gtk.Window):

    def __init__(self):
        super().__init__(Gtk.WindowType.TOPLEVEL, title='paint')
        self.connect('destroy', self.__on_destroy)
        vbox = Gtk.VBox()
        drawing_area = Gtk.DrawingArea()
        drawing_area.conenct('draw', self.__on_draw)
        vbox.pack_start(drawing_area, True, True, 2)
        self.add(vbox)
        self.show_all()

    def __on_draw(self, widget, g):
        g.set_source_rgb(200, 0, 0)
        g.move_to(16, 0)
        g.line_to(16, 32)
        g.stroke()

    def save_to_file(self, filename):
        # How to get pixels from drawing_area?
        pass

    def __on_destroy(self, e):
        Gtk.main_quit()

app = Application()
Gtk.main()

现在我要保存用户绘图。如何访问Gtk.DrawingArea小部件中的像素?

1 个答案:

答案 0 :(得分:1)

引用以下SO link

  

Gtk.DrawingArea派生自Gtk.Window。因此您可以使用   Gdk.pixbuf_get_from_window()获取绘图区域的内容   进入GdkPixbuf.Pixbuf,然后使用GdkPixbuf.Pixbuf.savev()   函数将pixbuf写为磁盘上的图像。

您可以点击链接查看完整代码。此link也可以为您提供帮助。