国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C語言中顯示漢字 - 青春正長 - 青春正長 - 和訊博客
C語言中顯示漢字 [原創(chuàng) 2007-11-19 18:13:17 ] 發(fā)表者: 青春正長   

        在Turbo C集成開發(fā)環(huán)境中不是漢化的,如何編制能顯示漢字的C程序呢? 

這種方法是調(diào)用中文漢字庫進(jìn)行漢字顯示。國家標(biāo)準(zhǔn)規(guī)定:漢字庫分94個區(qū),每個區(qū)有94個漢字(以位作區(qū)別),每個漢字在漢字庫中有確定的區(qū)和位編號, 這就是漢字的區(qū)位碼。每個漢字在庫中是以點陣字模形式存儲的,一般采用16×16點陣(32字節(jié))、24×24點陣(72字節(jié)),每個點用一個二進(jìn)制位 (0或1)表示,對應(yīng)在屏幕上顯示出來,就是相應(yīng)的漢字。 

  由于在中文環(huán)境下,輸入的是漢字的內(nèi)碼,我們必須將之轉(zhuǎn)換成區(qū)位碼,算出偏移量,從字庫中找到對應(yīng)的漢字,將其字模顯示即可。 

  內(nèi)碼轉(zhuǎn)換成區(qū)位碼方法如下: 

   qh=c1-0xa0;

         wh=c2-0xa0; 

  其區(qū)位碼就是: 

    qw=qh*0xff+wh 

  該漢字在字庫中離起點的位置是: 

     offset=(94*(qh-1)+(wh-1))*32L 

        得到了數(shù)據(jù)之后再對每個字節(jié)的每個位進(jìn)行判斷,如果為1就用putpixel()在相應(yīng)的點上畫一點,如果為0就不進(jìn)行畫點操作。

 

                   

以下的代碼部分為原創(chuàng):
 

 void hanzi16(int x,int y,char *s,int color,int row,int col)
{
     FILE *fp;
     char buf[16][2];
     int  i,j,k,m,n;
     unsigned char qh,wh;
     unsigned long offset;

     if( (fp=fopen("hzk16","rb"))==NULL )
     {
          closegraph();
          printf("Can‘t open hzk16");
          getch();
          exit(0);
     }

     while(*s)    ;遍歷所有需要顯示的漢字
     {
          qh=(*s)-0xa0;                                ;內(nèi)碼轉(zhuǎn)區(qū)碼
          wh=*(s+1)-0xa0;                           ;內(nèi)碼轉(zhuǎn)位碼
          offset=(94*(qh-1)+(wh-1))*32L;   ;計算該漢字在字庫中的偏移量
          fseek(fp,offset,SEEK_SET);           ;在文件中定位
          fread(buf,32,1,fp);                          ;取出32字節(jié)的點陣字模存入BUF中
          for(i=0;i<16;i++)                            ;由于16X16點陣中有16行
              for(n=0;n<row;n++)                   ;行增大倍數(shù)
                  for(j=0;j<2;j++)                     ;每行有2個字節(jié)
                      for(k=0;k<8;k++)              ;測試字節(jié)的位
                          for(m=0;m<col;m++)     ;列增大倍數(shù)
                             if( buf[i][j] & (0x80>>k) )    ;做“與”位操作,如果是1,就畫點
                               putpixel(x+j*8*col+k*col+m,y+i*row+n,color);
          s+=2;                                            ;一個漢字占2個字節(jié)
          x+=(16*col);                                 ;下一列的輸出位置
     }

     fclose(fp);
}

標(biāo)簽
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
點陣字模原理與讀取
點陣字體顯示系列之二:漢字顯示 | 遲思堂工作室
字庫注意事項
漢字的ASC值為什么會是負(fù)數(shù)
hzk16的介紹以及簡單的使用方法
字符編碼學(xué)習(xí)筆記
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服