<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 不依賴高點(diǎn)陣字庫(kù)實(shí)現(xiàn)屏幕漢字顯示

    時(shí)間:2024-04-27 05:26:39 計(jì)算機(jī)畢業(yè)論文 我要投稿
    • 相關(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é)的硬盤(pán)空間。一般漢字操作系統(tǒng)中的漢字顯示都采用16X16點(diǎn)陣字庫(kù)(僅占約260K字節(jié));
    而由于硬盤(pán)空間的限制,并不是每臺(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ù)(只需打開(kāi)文件SUBHZK),可在西文方式或任何中文方式下運(yùn)行。
    程序采用Turbo C2.0編寫(xiě),漢字放大顯示程序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
    #include
    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);
    } /*打開(kāi)或創(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);
    /*寫(xiě)漢字字模到文件*/
    }
    }
    fclose(fp);
    fclose(fptr);
    return 0;
    }
    int openhzk40(int hzk-num)

    /*打開(kāi)2.13系統(tǒng)40X40點(diǎn)陣字庫(kù)文件*/
    {
    if((fp=fopen(hzk-table[hzk-num],"rb"))==NULL)
    {
    cputs("Error on open file");
    getch();
    exit(1);
    }
    return 0;
    }
    /*程序DISPHZ.C:從文件SUBHZK中讀取漢字
    字形碼信息并放大顯示*/
    #include


    #include
    #include
    #define RED 4
    #define grOK 0
    #define STRLEN 6
    /*要顯示的漢字串所含漢字個(gè)數(shù)*/
    int writehz (int,int,int,int,int,int);
    void init-graph();
    void far restorecr tmode();
    FILE *fp;
    main ()
    {
    init-graph(); /*初始化圖形模式*/
    if((fp=fopen("subhzk","rb"))==NULL){
    printf("Cannot open file/n");
    exit(1);
    }
    writehz(30,30,10,2,2,RED);
    fclose(fp);
    getch();
    restorecr tmode();
    return 0;
    }
    void init-graph()
    {
    int gdriver=DETECT,gmode,errorcode;
    initgraph(&gdriver,&gmode,"");
    errorcode=graphresult();
    if(errorcode!=grOK)
    {
    printf("Graphics error:%s\n",grapherrormsg(errorcode));
    printf("Press any key to halt:");
    getch();
    exit();
    }
    }
    /*漢字字模讀取與放大顯示*/
    int writehz(int x,int y,int z,int x-zoom,int y-zoom,int color)
    {
    int i,j,k,n;
    char dot-arrays[180]; /*定義180字節(jié)數(shù)組,暫存漢字字模*/
    for(n=0;n{
    fread(dot-arrays,sizeof(dot-arrays),1,fp);
    for(i=0;i<36;i++) /*繪漢字上排(1至72字節(jié)所含點(diǎn)陣)*/
    for(j=0,j<2;j++)
    for(k=0;k<8,k++)
    if((dot-arrays[i*2+j]>>(7-k))&1)
    putpixel(x-zoom*(x+i),y-zoom*(y+j*8+k),color);
    for(i=0;i<36;i++) /*繪漢字下排(73至180字節(jié)所含點(diǎn)陣);*/
    for(j=0,j<3;j++)
    for(k=0,k<8,k++)
    if((dot-arrays[72+i*3+j]>>(7-k))&1)
    putpixel(x-zoom*(x+i),y-zoom*(y+16+j*8+k),color);
    x=x+36+z; /*移位,準(zhǔn)備繪下一漢字*/
    }
    return 0;
    }

    【不依賴高點(diǎn)陣字庫(kù)實(shí)現(xiàn)屏幕漢字顯示】相關(guān)文章:

    利用DVI實(shí)現(xiàn)雙屏幕超寬圖像顯示03-18

    YUV轉(zhuǎn)換RGB顯示的實(shí)現(xiàn)03-07

    漢字的動(dòng)態(tài)編碼與顯示方案03-18

    軟件封面特技顯示的語(yǔ)言實(shí)現(xiàn)03-28

    單片機(jī)系統(tǒng)中的漢字顯示03-18

    嵌入式現(xiàn)場(chǎng)智能顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)03-07

    多種數(shù)制顯示的匯編語(yǔ)言編程實(shí)現(xiàn)03-19

    VGA顯示與TV顯示的區(qū)別及轉(zhuǎn)換03-19

    靜態(tài)圖像的直接顯示03-06

    主站蜘蛛池模板: 91探花国产综合在线精品| 黑人无码精品又粗又大又长| 亚洲精品国产成人99久久| 欧美精品亚洲精品日韩专区| 国产午夜精品理论片久久影视| 亚洲精品无码高潮喷水在线| 99RE8这里有精品热视频| 国产精品成人观看视频国产奇米| 无码精品第一页| 午夜影视日本亚洲欧洲精品一区| 精品无码一区二区三区爱欲九九| 三级国产精品| 国产精品主播一区二区| 国语自产拍精品香蕉在线播放| 日韩精品中文字幕无码一区| 四虎永久在线精品免费一区二区| 国产伦精品一区二区三区视频金莲 | 99久久精品日本一区二区免费| 一级做a爰黑人又硬又粗免费看51社区国产精品视| 91午夜精品亚洲一区二区三区 | 99精品国产自在现线观看| 亚洲国产精品无码专区影院| 女人高潮内射99精品| 国产精品狼人久久久久影院| 欧美精品国产精品| 国内精品久久久久影院免费| 99久久精品国产高清一区二区 | 亚洲精品午夜无码专区| 午夜精品久久久久成人| 亚洲精品天堂成人片?V在线播放| 男女男精品网站免费观看| 日韩精品在线播放| 亚洲欧美精品一区久久中文字幕| 亚洲精品高清在线| 亚洲精品乱码久久久久久蜜桃图片| 亚洲国产精品不卡毛片a在线| 亚洲第一区精品观看| 正在播放国产精品每日更新| 亚洲精品无码专区久久久| 无码国产精品一区二区免费模式 | 91精品国产福利在线观看麻豆|