Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72304
  • 博文数量: 17
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-04 09:30
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(1)

2008年(15)

我的朋友

分类: 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 */
static const guint8 my_pixbuf[] =
{ ""
/* Pixbuf magic (0x47646b50) */
"GdkP"
/* length: header (24) + pixel_data (9216) */
"\\0\\0$\\30"
/* pixdata_type (0x1010002) */
"\\1\\1\\0\\2"
/* rowstride (192) */
"\\0\\0\\0\\300"
/* width (48) */
"\\0\\0\\0""0"
/* height (48) */
"\\0\\0\\0""0"
/* pixel_data: */

在这里我们可以找到文件中图像的数据长度--9216和文件头的长度--24,还有文件中图像数据结构的名称my_pixbuf,这是创建时默认的名称,如果有多个图像,可以指定不同的名称。如此,我们下面的语句就可以创建图像对象了。

pix = gdk_pixbuf_new_from_inline(9216+24, my_pixbuf, TRUE, NULL);

同样可以用下面的语句来创建图像控件:

image = gtk_image_new_from_pixbuf(pix);
阅读(1096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~