- 相關(guān)推薦
關(guān)于Turbo C在圖形狀態(tài)下快速顯示彩色漢字的方法
在用Turbo C提供的圖形函數進(jìn)行作圖時(shí),為了使屏幕顯示更加直觀(guān)明了,常常需要在圖形顯示的同時(shí),顯示必要的漢字說(shuō)明,Turbo C在圖形狀態(tài)下快速顯示彩色漢字的方法。這時(shí)Turbo C提供的一些函數就不能用了。
在漢字操作系統中,有一個(gè)16×16點(diǎn)陣的漢字庫,主要用于屏幕顯示。字庫中的漢字按16×16點(diǎn)陣模式存儲,即每個(gè)漢字相當于16×16=256個(gè)點(diǎn)組成。占用16×2=32個(gè)連續的字節單元。字節的每一位(bit)表示一個(gè)點(diǎn)的屬性:1表示亮點(diǎn),0表示暗點(diǎn)。連續的兩個(gè)字節表示該漢字字模的一行。32個(gè)字節的排列順序如圖:
@@T5S08100.GIF;圖1@@
計算機對西文字符采用一個(gè)字節表示,我國規定漢字用內碼(2個(gè)字節)表示。為了保證中西文兼容,也就是說(shuō),漢字系統的內碼必須同時(shí)允許ASCII碼和漢字的同時(shí)使用,而兩者之間不能發(fā)生沖突。目前規定每個(gè)字節只用七位,若兩個(gè)字節的最高位均為1,則該字符為漢字。
國標對漢字庫的結構作了統一的規定:即將漢字庫分為若干個(gè)區,每個(gè)區有94個(gè)漢字。
每一個(gè)漢字在字庫中有一個(gè)固定的區和位,即每一個(gè)漢字有一個(gè)區位碼。知道了區位碼也就相當于知道了漢字在字庫中的位置。由于漢字的內碼與區位碼有一定的關(guān)系,所以,只要通過(guò)內碼就可以得到區位碼,從而也就得到了漢字的字模。
設一個(gè)漢字的內碼為ddff,則此漢字的區碼為dd-161;位碼為ff-161;該漢字字模的第一個(gè)字節在字庫中的位置是(94×區碼 位碼)×32。這時(shí)只要連續的讀出32個(gè)字節,就可以得到該漢字的字模。
有些文章和書(shū)籍采用寫(xiě)點(diǎn)的方式來(lái)處理這32個(gè)字節。即某位為1,則寫(xiě)點(diǎn),某位為0,則不寫(xiě)點(diǎn)。如果這樣處理,則每個(gè)漢字需循環(huán)256次,寫(xiě)256個(gè)點(diǎn),字數越多,則會(huì )顯得很慢。
Turbo C提供了這樣兩個(gè)函數:
setlinestyle(int linestyle,unsignedupattern,int thickness);
line(int x0,int y0,int x1,int y1);
setlinestyle函數為設置線(xiàn)型函數,當linestyle取USERBIT-LINE且thickness取NORM-WIDTH時(shí),其后的line函數就會(huì )按upattern的16位二進(jìn)制數畫(huà)一點(diǎn)寬的線(xiàn),計算機論文《Turbo C在圖形狀態(tài)下快速顯示彩色漢字的方法》。upattern的每一位代表一個(gè)象元,如果那位為1,則該象元打開(kāi),否則該象元關(guān)閉。
我們在讀字模的時(shí)候可以一次讀2個(gè)字節,形成一個(gè)16位的二進(jìn)制數,把此二進(jìn)制數設為upattern,然后畫(huà)線(xiàn)。這樣只需循環(huán)16次就可寫(xiě)完一個(gè)漢字。速度得到很大的提高。尤其在字數較多時(shí),更體現出此方法的優(yōu)勢。
以下為用畫(huà)線(xiàn)的方法在西文狀態(tài)下顯示漢字的函數,在Turbo C 1.0、DOS6.0、兼容386機上運行通過(guò)。
#include
#include
#include
FILE *stream; //設 stream為全程變量//
void open-file
{//打開(kāi)漢字庫函數,使用的漢字庫為UCDOS的16點(diǎn)陣字庫:HZK16//
if((stream=fopen("hzk16","rb"))==NULL)
{ printf("Can't Open File HZK16"); exit(1);}
}
void close-file
{//關(guān)閉漢字庫函數//
fclose(stream); return;
}
void write16(unsigned char *word,int x,int y,int wd,int col)
{//word為所要顯示的漢字串,x,y為要顯示漢字的起始坐標,wd為兩個(gè)漢字//
//之間的間隔,col為要顯示漢字的顏色.//
register int k,i;
unsigned char cw[33];
char c[2];
unsigned long int qu-ma,wei-ma;
setcolor(col);settextstyle(0,HORIZ-DIR,1);
for(k=0;word[k]!='/0';k =2)
【Turbo C在圖形狀態(tài)下快速顯示彩色漢字的方法】相關(guān)文章:
《彩色圖形找朋友》教學(xué)設計06-28
平移的圖形剪紙方法03-21
彩色圖形找朋友教案設計06-28
如何快速搶到華為榮耀3C07-11
青少年快速的減肥方法06-28
系鞋帶的快速方法圖解06-29
快速閱讀書(shū)籍的方法06-28
衣柜快速除甲醛方法06-29
快速化妝方法介紹07-04