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

C 如何从嵌入式资源加载图像,c,resources,gtk,embedded-resource,gtk3,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有任何用处。GTK+不支持

我想将图像设置为按钮:

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有任何用处。

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


但是,如果您坚持使用Windows资源,我可以想到一种可能的方法,尽管这不是唯一的方法:使用Windows API资源函数从您的资源加载
HBITMAP
,调用
GetObject()
HBITMAP
获取
位图
结构,然后使用
位图
结构中的相应字段作为参数调用(
行跨距
=
位图.bmWidthBytes
)。祝你好运

图像资源本身的数据格式是什么?@andlabs嗯,现在是png。可以转换为bmp或任何其他格式,没有问题。