- 相關(guān)推薦
不依賴高點(diǎn)陣字庫(kù)實(shí)現(xiàn)屏幕漢字顯示
在設(shè)計(jì)軟件封面或菜單標(biāo)題時(shí),常需用到放大的漢字顯示。通常采用的方法是一邊從高點(diǎn)陣字庫(kù)中讀取漢字的字形碼,一邊加以變換在圖形方式下繪點(diǎn);但高點(diǎn)陣字庫(kù)占有較大存儲(chǔ)空間,例如 :2.13漢字系統(tǒng)中四種字體(宋、仿宋、黑、楷)的40X40點(diǎn)陣字庫(kù)共占用近5M字節(jié)的硬盤空間。一般漢字操作系統(tǒng)中的漢字顯示都采用16X16點(diǎn)陣字庫(kù)(僅占約260K字節(jié));
而由于硬盤空間的限制,并不是每臺(tái)微機(jī)上都裝有高點(diǎn)陣字庫(kù)。
如何使?jié)h字放大顯示程序不依賴高點(diǎn)陣字庫(kù)而獨(dú)立運(yùn)行?本文提供一種方法,將需要放大顯示的漢字串的字形碼一次性從2.13I高點(diǎn)陣字庫(kù)(40X40點(diǎn)陣)讀入一個(gè)SUBHZK文件,以后每次顯示放大漢字時(shí)只需從該文件讀取字模信息,而SUBHZK比高點(diǎn)陣字庫(kù)要小的多。這樣,漢字顯示程序運(yùn)行時(shí)就徹底擺脫了高點(diǎn)陣字庫(kù)(只需打開文件SUBHZK),可在西文方式或任何中文方式下運(yùn)行。
程序采用Turbo C2.0編寫,漢字放大顯示程序DISPHZ運(yùn)行時(shí)只需將SUBHZK和相應(yīng)顯示器的圖形驅(qū)動(dòng)程序(如CGA.BGI、EGAVGA.BGI)隨DISPHZ.EXE放在同一目錄下即可。
須注意的是,40X40點(diǎn)陣字模(字形碼)實(shí)際上由40×36點(diǎn)陣組成,其漢字字形碼排列格式為
@@T5S06100.GIF;圖1@@
程序清單:
/*程序READGHZ.C:將需放大顯示的漢字串的字形碼從2.13系統(tǒng)40X40點(diǎn)陣字庫(kù)讀入
文件SUBHZK*/
#include<stdio.h>
#include<io.h>
int openhzk40(int);
FILE *fp,*fptr; /*定義全局文件指針*/
char *hzk-table[]={"c:\\213\\hzk40s","c:\\231\\hzk40f",
"c:\\213\\hzk40h","c:\\213\hzk40k"};
main()
{
unsigned char *string="管理信息系統(tǒng)";
/*需放大的漢字串*/
unsigned char inter-code ,zone-code,bit-code;
int locate,hzk-num,flag=0
char *p,dot-arrays[180];
if((fptr=fopen("subhzk","wb"))==NULL){
printf("Cannot open file\n");
exit(1);
} /*打開或創(chuàng)建文件SUBHZK */
openhzk40(1);
p=string;
while(*p)
{
inter-code=*p ;
if(inter-code>0xal)
if(flag==0)
{
zone-code=(inter-code-0xa0)&0x7f;/*漢字區(qū)碼*/
flag=1;
}
eles
{
bit-code=(inter-code-0xa0)&0x7f;
/*漢字位碼*/
flag=0;
locate=(zone-code-0x10)*94 bit-code-1;
/*漢字字模地址*/
fseek(fp,locate*180L,SEEK-SET);
/*置文件指針于漢字字模地址*/
fread(dot-arrays,sizeof(dot-arrays),1,fp);
/*讀漢字字模于數(shù)組中*/
fwrite(dot-arrays,sizeof(dot-arrays),1,fptr);
/*寫漢字字模到文件*/
}
}
fclose(fp);
fclose(fptr);
return 0;
}
int openhzk40(int hzk-num)
/*打開2.13系統(tǒng)40X40點(diǎn)陣字庫(kù)文件*/
{
if((fp=fopen(hzk-table[hzk-num],"rb"))==NULL)
{
cputs("Error on open fi
[1] [2]
【不依賴高點(diǎn)陣字庫(kù)實(shí)現(xiàn)屏幕漢字顯示】相關(guān)文章:
液晶顯示器·什么是屏幕尺寸04-26
激光轉(zhuǎn)鏡顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)04-28
基于圖像對(duì)的體視顯示算法研究與實(shí)現(xiàn)04-29
LED顯示屏γ校正的研究和實(shí)現(xiàn)04-28
屏幕·什么是投影屏幕04-26
飛機(jī)座艙顯示/控制綜合評(píng)價(jià)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)04-29
利用IDL語(yǔ)言實(shí)現(xiàn)對(duì)氣象數(shù)據(jù)的體視化顯示04-29
屏幕04-29