2015-03-18 4 views
0

Я хочу, чтобы установить изображение для кнопки:Как загрузить изображение из внедренных ресурсов

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

Как заставить ее работать с вложенными ресурсами?

У меня есть ресурс.h/resource.rc, попробуем использовать MakeIntResource, но я не вижу его использования для GTK.

+0

Какой формат данных является самим ресурсом изображения? – andlabs

+0

@andlabs хорошо, png пока. Может конвертировать в bmp или любой другой, без проблем. –

ответ

2

GTK + не поддерживает ресурсы Windows (по крайней мере, насколько я могу судить). Вместо этого он использует собственный межплатформенный формат ресурсов, GResource. Самый простой способ работы с встроенными ресурсами - использовать это. Он несовместим с редакторами ресурсов Windows и требует генерации дополнительного исходного файла C, но он должен работать нормально, пока вы используете GLib или GTK +. У вас должен быть компилятор GResource как часть вашей установки GTK + (но я не уверен на 100%). И если вы пройдете этот маршрут, вы сможете продолжать использовать PNG-файлы. (Я не знаю, как использовать PNG-файлы с ресурсами Windows, если это возможно.)

Если вы настаиваете на использовании ресурсов Windows, тем не менее, я могу представить один из возможных способов сделать это, хотя это isn «т только один: использовать функции API ресурсов Windows для загрузки HBITMAP с вашего ресурса, вызовите GetObject(), чтобы получить BITMAP структуру из HBITMAP, а затем вызвать gdk_pixbuf_new_from_data() с соответствующими полями из BITMAP структуры в качестве параметров (rowstride == BITMAP.bmWidthBytes). Удачи!

Смежные вопросы