GTKmm:在文件中编码图像?

时间:2014-10-17 16:16:46

标签: c++ gtk gtkmm

我有这个使用

显示图像的UI
add(*manage(new Gtk::Image("image.png")));

但应用程序会从每个lauch的硬盘驱动器中取出它,如果它不存在则会被打破,等等。我如何编码image.png以便我可以在代码中发送它?

2 个答案:

答案 0 :(得分:1)

GResource对此非常有用。它允许您在* .gresource.xml文件中列出资源文件(例如图像)。然后glib-compile-resources实用程序从中生成一个.c文件,并将该.c文件链接到您的应用程序中。您需要一些Makefile.am更改才能使其正常发生,但您可以查看一些现有项目,例如我的Glom项目:

https://git.gnome.org/browse/glom/tree/Makefile_glom.am?id=f79223fa7ebbb0cfc12c6a47366136de478d57cb#n44

然后您可以使用API​​,例如Gtk :: Image :: set_from_resource()。或者您可以直接使用API​​(例如g_resources_open_stream())获取数据,甚至可以使用g_resources_enumerate_children()遍历所有可用资源。

以下是我的Glom项目的一些相关提交:

https://git.gnome.org/browse/glom/commit/?id=f79223fa7ebbb0cfc12c6a47366136de478d57cb

https://git.gnome.org/browse/glom/commit/?id=9cd1b6dab94191abbb9392304e867bddb2bba766

答案 1 :(得分:0)

转换" image.png"到XPM文件; FWIW,标准XPM格式是可编译的C代码。但更重要的是,有pixbuf和pixmap函数可以直接加载XPM数据。