一)XBM
XBM是单色的位图的表示方法。从计算机历史的演变来看,这个应该是比较早在计算机中使用的图标文件格式。XBM是直接用C语言描述的单色位图格式。 示例:解释: 1)4个宏定义中,前两个是必须的。即定义位图的宽和高。后两个是可选的,定义位图的热点。啥是热点?这种位图一般是用来当图标用的。比如作为鼠标,那么鼠标图片其实是个矩形,而热点就是这个矩形里那个“鼠标尖”所在位置的坐标。 2)跟着后面的数组就是位图数据。单色位置即一个像素用一个BIT表示。如果图片宽度不是8的倍数,那么一行数据的最后一个字节的后几个BIT将被忽略,即不使用。 3)XBM有两种格式,一种是X10格式,一种是X11格式。不同之处在于像素数据的打包方式。X10是用16BIT的unsigned short来表示像素数据,而X11是用8BIT的unsigned char来打包像素数据。 4)YY一下:早期的计算机是单色的,表达的东西也很简单明了。而且设计得很“程序员化”,即可与程序代码兼容,即直接把它当成C源代码编译,也可以当成独立的文件保存。因为可以专门设计工具来打开并渲染这种文件。 二)XPM XPM是XBM的扩展。它支持单色位图,也支持不同灰阶位图,也支持彩色位图。这种格式保持了XBM的“程序员化”设计,也是直接用C语言来描述的。而且还有ASCII艺术的影子在里面。ASCII艺术是早期计算机里比较经典且流行的一种程序员艺术。就是用不同的字母和符号来画图。其核心结构是这样,用C语言的字符串数组来表示。第一行表达位图的基本信息,如长宽等。第二部分是位图中用到的颜色映射。即用N个字符映射成颜色。第三部分是位图的像素数据。直接用字符来作画。第四部分是扩展部分数据。 格式: static char * <pixmap_name>[] = { <Values> <Colors> <Pixels> <Extensions> }; 注释:解释:上例中表达的是一个4X4的小图像。这个数据结构和WINDOWS下的BITMAP结构非常类似。XPM在X系统中的地位与BITMAP在WINDOWS中的地位应该是相当的。 三)GDK中相关API GDK中GdkBitmap用来表示单色位图,GdkPixmap用来表示多彩色位图。当GdkPixmap颜色深度为1时表示的即是单色位图。 相关API如下: 从XBM数据创建一个GdkBitmap对象。有了GdkDrawable对象,即可画到窗口或者其它GdkDrawable对象上。 |
|
来自: 离魂异客 > 《computer》