
#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点阵,字从左往右的源程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)