0

我正在尝试显示从 pixbuf 加载的图像(从内存中的数据),并且图像每次都会更新(因为 pixbuf 也随着时间而变化)。我的问题是,由于窗口将只包含图像(定期更新),我需要一个 gtk 可绘制或绘图区域吗?或者我可以简单地在窗口中显示图像吗?另一种选择是使用 cairo。任何人都可以提出一个好的方法吗?

4

2 回答 2

1

将文件加载到 pixbuf 中,有一个 new_from_file 构造函数或类似的东西。

是的,创建一个 DrawingArea 并将其粘贴在 Box 或某处。

接下来,获取 DrawingArea 父窗口(会有类似 get_window 之类的方法)。这将是你的 Drawable。

创建一个 GC(图形上下文) - 您不需要在其中设置任何特殊值。

将 DrawingArea 连接到公开事件。在暴露事件中,让它使用您的 pixbuf 和您创建的 GC 调用 Drawable 上的 draw_pixbuf 方法。

每当您以某种方式更新 pixbuf 时,都会调用这个相同的 draw_pixbuf 方法。

如果您不是从文件中加载它并打算在其上绘制,您可能还需要考虑使用像素图。像素图本身就是一个可绘制对象,因此您可以直接在其上绘制矩形和东西。在 DrawingArea 上显示它的唯一真正区别是您需要在 Drawable 上调用 draw_drawable 方法而不是 draw_pixbuf。

请注意,我是从使用 Perl/Gtk2 的记忆中编写的,它可能无法清晰地映射到您使用的任何语言。

于 2010-10-10T20:23:47.563 回答
0

AGtkImage可以正常工作,并且比您列出的所有内容都简单;-)

于 2010-10-06T18:33:53.737 回答