汉字库的模型

来源:互联网 发布:儿童网络投票策划方案 编辑:程序博客网 时间:2024/05/16 07:07
#include "Conio.h"#include "graphics.h"#define closegr closegraphstruct  ChineseLib                 /*  汉字字模数据结构  */{    unsigned char  index[3];               /*  汉字内码索引     */    unsigned char   data[32];                        /*  点阵码数据 */};struct  ChineseLib hz[]={    /* 以下是 '宋' 的 16点阵宋体 字模,32 byte */    "宋"    ,    0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x04,    0x81,0x08,0x01,0x00,0x7F,0xFC,0x03,0x80,    0x05,0x80,0x05,0x40,0x09,0x20,0x11,0x10,    0x21,0x0E,0x41,0x04,0x01,0x00,0x00,0x00,    /* 以下是 '体' 的 16点阵宋体 字模,32 byte */    "体",    0x10,0x40,0x18,0x40,0x10,0x40,0x20,0x40,    0x37,0xFC,0x60,0xC0,0xA0,0xE0,0x21,0x60,    0x21,0x50,0x22,0x48,0x24,0x4E,0x2B,0xF4,    0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x00,};void initgr(void) /* BGI初始化 */{    int gd = DETECT, gm = 0; /* 和gd=VGA,gm=VGAHI是同样效果 */    registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */    initgraph(&gd, &gm, "");}void drawmat(char *mat,int matsize,int x,int y,int color)/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/{    int i, j, k, n;    n = (matsize - 1) / 8 + 1;    for (j = 0; j < matsize; j++)        for (i = 0; i < n; i++)            for (k = 0;k < 8; k++)                if (mat[j * n + i] & (0x80 >> k)) /*测试为1的位则显示*/                    putpixel(x + i * 8 + k, y + j, color);}int main(void){    int i, j;    int size=32;    char s[]="宋";    initgr(); /* BGI初始化 */    for (i = 0; i < 2; i++)    {        if (hz[i].index[0]==s[0] && hz[i].index[1]==s[1])        {            drawmat(hz[i].data, 16, 100, 200, WHITE);        }    }    getch(); /* 暂停一下,看看前面绘图代码的运行结果 */    closegr(); /* 恢复TEXT屏幕模式 */    return 0;}

 
原创粉丝点击