24点阵专用汉字库的建立和显示(C语言程序设计)

24点阵专用汉字库的建立和显示(C语言程序设计),第1张

#include "Conioh"

#include "graphicsh"

#define closegr closegraph

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);

}

char zi24[]={

/ 以下是 '字' 的 24点阵隶书 字模,72 byte /

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x18,0x00,0x08,0x1C,0x10,

0x1F,0xFF,0xF0,0x18,0x00,0x30,0x18,0xFF,

0x10,0x09,0xC3,0x90,0x00,0x3C,0x00,0x00,

0x1C,0x00,0x3F,0xFF,0xFE,0x7E,0x0C,0xFE,

0x00,0x1C,0x04,0x00,0x1C,0x00,0x04,0x3C,

0x00,0x03,0xF8,0x00,0x00,0xE0,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

}

char mo24[]={

/ 以下是 '模' 的 24点阵楷体_GB2312 字模,72 byte /

0x00,0x00,0x00,0x00,0x00,0x60,0x02,0x00,

0x30,0x03,0x0C,0x20,0x03,0x04,0x3C,0x02,

0x07,0xE0,0x02,0x1C,0x40,0x02,0x00,0x40,

0x03,0xC0,0x70,0x7E,0x1F,0x98,0x02,0x08,

0x10,0x06,0x0F,0x90,0x07,0x88,0x10,0x0A,

0xCB,0xE0,0x1A,0x05,0x00,0x12,0x01,0x1E,

0x22,0x0F,0xFE,0x42,0x32,0x80,0x02,0x02,

0x40,0x02,0x04,0x60,0x02,0x0C,0x30,0x02,

0x18,0x1C,0x02,0x20,0x0F,0x02,0x00,0x00,

}

}

int main(void)

{

int i, j;

initgr(); / BGI初始化 /

drawmat(yi12, 12, 100, 125, WHITE);

drawmat(er12, 12, 115, 125, WHITE);

drawmat(dian12, 12, 130, 125, WHITE);

drawmat(zhen12, 12, 145, 125, WHITE);

drawmat(song16, 16, 160, 123, YELLOW);

drawmat(ti16, 16, 180, 123, YELLOW);

drawmat(zi24, 24, 200, 119, CYAN);

drawmat(mo24, 24, 230, 117, GREEN);

drawmat(guan48, 48, 350, 110, RED);

drawmat(guan64, 64, 410, 100, YELLOW);

~~~~未完

/图形模式下的汉字显示/

/图形模式下的汉字显示/

/图形模式下的汉字显示/

/图形模式下的汉字显示/

/图形模式下的汉字显示/

/图形模式下的汉字显示/

#include<graphicsh>

#include<stdioh>

void hanzi(int x,int y,char s,int colour) / x,y为汉字坐标,s为字符串,colour为颜色值/

{

FILE fp;

char buffer[32];

register i,j,k;

unsigned char qh,wh; /区位码/

unsigned long location; /汉字在字库中的位置/

if((fp=fopen("hzk16","rb"))==NULL)

{

printf("Can't open hzk16!");

getch();

exit(0);

}

while(s)

{

qh=s-0xa0;

wh=(s+1)-0xa0;

location=(94(qh-1)+(wh-1))32L;

fseek(fp,location,SEEK_SET);

fread(buffer,32,1,fp);

for (i=0;i<16;i++)

for(j=0;j<2;j++)

for(k=0;k<8;k++)

if(((buffer[i2+j]>>(7-k))&0x1)!=NULL)

putpixel(x+8j+k,y+i,colour);

s+=2;

x+=16; /汉字间距/

}

fclose(fp);

}

main()

{

int graphdriver=VGA;

int graphmode=VGAHI;

initgraph(&graphdriver,&graphmode,"");

hanzi(110,110,"显示汉字的例子,不需要汉字系统。",2);

getch();

closegraph();

}

#include<reg51h>

#include<intrinsh>

#define unchar unsigned char

#define unint unsigned int

unchar code table1[]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };

unchar code table2[4][32]= //纵向取模

{

/--  文字:  子  --/

/--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --/

0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x82,0x40,0x81,0x47,0xFE,

0x48,0x80,0x50,0x80,0x60,0x80,0x40,0x80,0x00,0x80,0x01,0x80,0x00,0x80,0x00,0x00,

/--  文字:  诺  --/

/--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --/

0x84,0x00,0x64,0x00,0x47,0xFC,0x00,0x08,0x00,0x10,0x22,0x08,0x22,0x10,0xFA,0x7E,

0x23,0xC4,0x26,0x44,0x22,0x44,0x22,0x44,0xFA,0x44,0x22,0x7E,0x22,0x00,0x00,0x00,

/--  文字:     --/

/--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

void dizh_delay(unint t)

{

while(t--)

_nop_();

}

void main()

{

while(1)

{

unint m,i,n,h;

unchar fst=0;

for(h=0;h<64;h+=2) //两个字,322=64(一个字有32个点阵码)

{

for(n=0;n<20;n++)//控制帧移动速度

{

for(m=0,i=0;m<16;m+=2)

{

P3=table1[i];i++;

P0=table2[0][m+h];

P2=table2[0][m+h+1];

dizh_delay(100);

}

P3=0xff;

for(m=16,i=0;m<32;m+=2)

{

P1=table1[i];i++;

P0=table2[0][m+h];

P2=table2[0][m+h+1];

dizh_delay(100);

}

P1=0xff;

}

}

}

}

以上就是关于24点阵专用汉字库的建立和显示(C语言程序设计)全部的内容,包括:24点阵专用汉字库的建立和显示(C语言程序设计)、C语言编程解决汉字点阵的提取与显示、请哪位单片机高手帮我解决一个问题, 我想要一个16*16点阵,字从左往右的源程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10120050.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存