分类: LINUX
2008-04-16 16:47:49
许多在WINDOWS下开发过GUI应用程序的朋友都知道可以将一些资源如图片、图标等放到动态链接库中,从而避免被其它程序删除或更改的危险,在 Linux中也可以,hello.c这段代码中的#include "about.h"就将一幅图像保存到插件的动态链接库中。
GTK+中的GDKPIXBUF库是专门用来图像处理部分,它支持多种图像格式和动画,如常见的TIFF,JPEG,PNG,GIF等图像格式。
在Linux中要把图像保存到插件中去,首先要将图像转为C语言代码格式,即生成about.h文件,它是由下面命令生成的:
gdk-pixbuf-csource --raw gnome-gmush.png > about.h |
gdk-pixbuf-csource是GTK+ 2.0中提供的一个将图像文件转换成GdkPixbufs结构格式的C源代码工具,参数--raw分别表示禁止生成的图像数据保持运行时的长度,通过输出 重定向,将生成的源代码保存到about.h文件中去,再加入包含语句#include "about.h",如此就可以将图像资源保存到库文件中来了。
下面是生成的about.h的开始部分:
/* GdkPixbuf RGBA C-Source image dump */ |
在这里我们可以找到文件中图像的数据长度--9216和文件头的长度--24,还有文件中图像数据结构的名称my_pixbuf,这是创建时默认的名称,如果有多个图像,可以指定不同的名称。如此,我们下面的语句就可以创建图像对象了。
pix = gdk_pixbuf_new_from_inline(9216+24, my_pixbuf, TRUE, NULL); |
同样可以用下面的语句来创建图像控件:
image = gtk_image_new_from_pixbuf(pix);