如何从嵌入式资源加载图像

时间:2015-03-18 12:49:28

标签: c resources gtk embedded-resource gtk3

我想将图片设置为按钮:

GtkImage* imageForButton = gtk_image_new_from_resource("which path is here?");
GtkWidget* btn = gtk_button_new();
gtk_button_set_image(GTK_BUTTON(btn));

如何使其与嵌入式资源一起使用?

我有resource.h / resource.rc,会尝试使用MakeIntResource,但我没有看到它对GTK有任何用处。

1 个答案:

答案 0 :(得分:2)

GTK +不支持Windows资源(至少据我所知)。相反,它使用自己的跨平台资源格式GResource。使嵌入资源工作的最简单方法是使用它。它与Windows资源编辑器不兼容,并且需要生成额外的C源文件,但只要您使用GLib或GTK +它就可以正常工作。您应该将GResource编译器作为GTK +安装的一部分(但我并非100%确定)。如果你走这条路,你将能够继续使用PNG文件。 (我不知道如何使用Windows资源使用PNG文件,如果可能的话。)

但是,如果您坚持使用Windows资源,我可以考虑一种可行的方法,尽管这不是唯一的方法:使用Windows API资源函数加载HBITMAP您的资源,请致电GetObject()以获取BITMAP的{​​{1}}结构,然后使用HBITMAP结构中的相应字段作为参数调用gdk_pixbuf_new_from_data()({ {1}} == BITMAP)。祝你好运!