根据位模式构筑图形
图标(icon)或者图形(glyph)是一种小型的位模式映射于屏幕后产生的图像。一个位表示图像上的一个像素。如果一个位被设置,那么它所代表的像素就是“亮”的,如果一个位被清除,那么它所代表的像素就是“暗”的。所以一系列的整数值能够用于为图形编码。类似Iconedit这样的工具用来绘制图形。它们所输出的文件是一个包含一系列整型数的ASCII文件,可以被一个窗口程序所包含。它所存在的问题是程序中的图标只是一串十六进制数。在C语言中,典型的16*16的黑白图形可能如下:
static unsigned short stopwatch[] = {
0x07C6,
0x1FF7,
0x383B,
0x600C,
0x600C,
0xC006,
0xDF06,
0xC106,
0xC106,
0x610C,
0x610C,
0x3838,
0x1FF0,
0x0700,
0x0000
};
这些C语言并未提供一个有关图形实际模样的任何线索。这里有一个惊人的#define定义的优雅集合,允许程序建立常量,使它们看上去像是屏幕上的图形。
#define X )*2+1
#define - )*2
#define s ((((((((((((((((0 /*用于建立16位宽的图形*/
定义了它们以后,只要画所需要的图标或图形等,程序会自动创建它们的十六进制模式。
使用这些宏定义,程序的字描述能力大大增强,上面这个例子可以转变为:
static unsigned short stopwatch[] = {
}
与前面的代码相比,它的意思更为明显。
标准的C语言具有八进制、十进制和十六进制常量,但没有二进制常量,否则倒是一种更为简单的绘制图形位模式的方法。
千万不要忘了在绘图结束之后清除这些宏定义,否则很可能会给你后面的代码带来不可预测的后果。