文字输出



Allegro 提供了文字输出例程, 可以使用比例字体 (单个字符可以是任何大小) 和固定大小为 8x8 或 8x16 字体. 字体包含了 ASCII 字符 32 到 255: 所有其它的字符将被空格代替. grabber 程序能从一个 PCX 文件上画着的字符集来建立字体 (见 grabber.txt 获得更多信息), 也可以从 GRX 或 BIOS 字体格式文件获取.

extern FONT *font;
一个简单的 8x8 固定大小字体 (mode 13h BIOS 缺省). 如果你想 改变供 GUI 例程使用的字体, 将这个指针改向 你自己的字体.

void text_mode(int mode);
设置文字画向位图的模式. 如果 mode 为 0 或正, 文字输出将不通明且字符的背景将被设置成颜色 #mode. 如果 mode 是负数, 文字将以透明方式画在位图上 (即: 字符的背景将不会改变). 缺省值为零.


void textout(BITMAP *bmp, FONT *f, unsigned char *s, int x, y, int color);
写一个字符串 s 到位图的 x,y 位置, 使用当前的文字模式指定的字体和 前景颜色. 如果 color 是 -1 且 正在使用比例字体, 它将使用字体位图的原始颜色 (你从 grabber 程序读出的) 这允许了多色彩的文字输出.

void textout_centre(BITMAP *bmp, FONT *f, unsigned char *s, int x, y, color);
和 textout() 相似, 但是将 x 坐标解释为字符串的中间 而不是它的左边界.

void textout_justify(BITMAP *bmp, FONT *f, unsigned char *s, int x1, int x2, int y, int diff, int color);
在区域 x1-x2 之间画上对齐的文字. 如果空余空间的数量 比 diff 值要大, 则将被放弃并用常规的 左对齐代替.

void textprintf(BITMAP *bmp, FONT *f, int x, y, color, char *fmt, ...);
格式化文字输出, 使用 printf() 形式的字符串.

void textprintf_centre(BITMAP *bmp, FONT *f, int x, y, color, char *fmt, ...);
和 textprintf() 相似, 但是将 x 坐标解释为字符串中央而不是左 边界.

int text_length(FONT *f, unsigned char *str);
返回以指定字体构成的字符串的长度(点为单位).

int text_height(FONT *f)
返回指定字体的高度 (点为单位).

void destroy_font(FONT *f);
释放正在被字体结构使用的内存.




返回