我正在尝试显示我从pixbuf(来自内存中的数据)加载的图像,并且每次都会更新图像(因为pixbuf也随时间变化)。我的问题是,由于窗口只包含图像(定期更新),我需要一个gtk drawable或绘图区域吗?或者我可以简单地在窗口中显示图像?另一种选择是使用cairo。任何人都可以建议一个好方法吗?
答案 0 :(得分:1)
将文件加载到pixbuf中,有一个new_from_file构造函数或其他东西。
是的,创建一个DrawingArea并将其粘贴在Box或其他地方。
接下来,获取DrawingArea父窗口(将有一个像get_window这样的方法)。这将是你的Drawable。
创建GC(图形上下文) - 您不需要在其中设置任何特殊值。
将DrawingArea连接到公开事件。在expose事件中,让它使用您创建的GC使用pixbuf调用Drawable上的draw_pixbuf方法。
每当你以某种方式更新pixbuf时,都要调用相同的draw_pixbuf方法。
如果您没有从文件中加载像素并打算在其上绘图,您可能还需要考虑使用像素图。像素图本身是一个Drawable,因此您可以直接在其上绘制矩形和东西。在DrawingArea上显示它的唯一真正区别是你需要在Drawable上调用draw_drawable方法而不是draw_pixbuf。
请注意,我是在使用Perl / Gtk2的内存中写的,并且它可能无法完全映射到您正在使用的任何语言。
答案 1 :(得分:0)
GtkImage
工作得很好,比你列出的所有东西都简单; - )