X Window 系统使用指南--定义和使用位元映像( 二 )


你将会得到提示以确定你是否真要如此做 。
14.2.3 画形状(shapes)bitmap有数个功能使得画图更容易:画一条线:碰触Line,游标会变成一个大黑点,在所欲画的线的一端碰触
一下按钮,而後在另一端也碰触一下,bitmap会画出这条线 。画一个中空的圆:碰触Circle,同样地,游标变成一个大黑点,在你所欲
画圆的圆心碰触一下,而後在所欲画圆之圆周上的任一点碰触
一下,bitmap将画出这个圆的圆周 。画一个填满的圆:碰触Filled Circle ,其馀同上 。
14.2.4 在长方形的区域内工作命令Clear Area、Set Area和Invert Area 必须在长方形区域下操作,长
方形区域的决定方式是你在它的左上角以按住滑鼠任意按钮的方式指定,然後
拖拽到右下角,当你拖拽时,目前被指定的区域会以高亮度显示 。你可以拷贝、移动或重叠(overlay) 一个区域,你以拖拽的方式指定原始
区域,而後在目标区域上的左上角碰触按钮,各种命令的动作如下:拷贝(Copy):目标区域会被消除,而所有对应於原始区域为黑像素的
均会被设定 。移动(Move):原始区域和目标区域均被清除,目标区域对应於原始区
域为黑像素的均会被设定 。重叠(Overlay) :在目标区域中对应於原始区域被设定的像素均会被
设定,其它没有改变 。
14.2.5 一个位元映像的档案格式一个位元映像会如同ASCII 文字一样储存到档案中,其格式类似C 语言程
式片段 。例如:档案 /usr/include/X11/bitmaps/cntr_ptr 的内容:#define cntr_ptr_width 16
#define cntr_ptr_height 16
#define cntr_ptr_x_hot 7
#define cntr_ptr_y_hot 1
static char cntr_ptr_bits[]=
0x00, 0x00, 0x80, 0x01, 0x80, 0x01,
0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07,
0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f,
0x98, 0x19, 0x88, 0x11, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x00, 0x00;带有_x_hot和_y_hot的变数仅在热点被指定後才会包含进来 。更多的细节包含在bitmap(1) 的指南页中,不过无论如何,你毋需直接以
此种格式处理位元映像,任何你想要做的事均有工具程式来处理 。
14.3 编辑位元映像其它的方法bitmap程式对於一个小的图形工作起来算是相当方便,但它有一些缺点:.它不接受较简单格式的输入档,例如像一些由扫描现存图形所产生的档案 。.它必需以交谈式执行,对一些程序性的编辑动作并不方便 。.你可能希望用它产生一些位元映像来显示,但它无法在非X系统上执行 。要克服上述的问题,需要以字元图(character picture) 的形式来建立位
元映像,并提供这个格式和bitmap的格式相互转换的程式 。字元图格式是非常
明显的:每一行的像素用一行的字元来表示,黑的像素用一个指定的字元(预
设为# )而白的像素用另一个字元(预设为 -)表示,以cntr_ptr为例,字元
图的格式如图14-3┌————————————————————┐
│ p164 fig 14.3 │
│ │
│ 图14-3 字元图格式的位元映像 │
└————————————————————┘你能以本文编辑器或其它任何系统上任何其它合适的程式编辑这些图形,
也可以由扫描器(scanner) 或其它影像设备产生 。
14.3.1 字元图和X位元映像间的转换X提供了两个程式作字元图格式和位元映像格式间的转换:atobm : 转换一个字元图为标准的位元映像 。bmtoa : 转换一个标准的位元映像为字元图 。两个程式均允许你指定以何字元来代表黑和白像素 。
14.4 定制你的根视窗 -- xsetrootxsetroot 让你设定你的根视窗的特徵,你可以改变视窗背景的颜色和图样(
pattern) ,以及视窗所使用的游标 。14.4.1 设定一个背景的位元图样你可以指定任何位元映像来当作你萤幕的背景(只要它是X的标准格式)

推荐阅读