<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現在位置:范文先生網>理工論文>計算機論文>文本方式下圖形提示界面制作

      文本方式下圖形提示界面制作

      時間:2023-02-20 22:50:20 計算機論文 我要投稿
      • 相關推薦

      文本方式下圖形提示界面制作

         在商品化的軟件中,有大量的提示信息界面以使用戶清楚軟件的狀態和運行情況,使用漢字提示可以大大方便不懂西文提示的用戶。但如果少量的漢字提示在圖形方式下實現,將使程序的設計復雜化,而且圖形方式比文本方式的實現要慢得多。本文使用EGA文本方式下漢字顯示原理,設計制做了一個微機駐留報警系統的封面提示信息,提示制做人、版權、公司徽標等信息,實現了漢字,圖形,字符的彩色提示界面。下面討論實現的具體方法及原理。
      一、漢字字模數據的提取
      文本方式下的漢字顯示是通過用漢字字模改寫西文字符字模的方法實現的,所以應首先獲得漢字字模數據。
      各種漢字操作系統可以提供不同大小和字體的漢字字模,本文作為一個實例,從金山DOS的cclibj.dot的字庫中獲得所要顯示的楷體漢字字模的16×16點陣數據。
      字庫的讀取用C語言實現,具體方法如下。
      (1)把需要顯示的漢字作為同字符同樣看待的字符串賦值于一個內存變量f,漢字字符串的值在WPS的N命令下輸入,然后轉入C語言進行編程。
      (2)在C語言的環境中漢字字符串的值是國標碼,字模的讀取,就是利用所要顯示的漢字國標碼計算此漢字在字庫中對應的字模的位置,然后讀取字庫中的32字節的字模數據至內存緩沖區buf中。
      C語言中漢字串的國標碼與cclibj.dot字庫中一條字符記錄具有如下的對應關系:
      C1,C2是整型數輔助變量,ihi、ilo表示國標碼的高兩位和低兩位整型數
      。l為長整型數,用于字模查找定位。
      C1=(i-a0H)+94
      C2=i-a0H+c1-659
      l=C2*32L
      利用函數:
      lseek(fp, l, seek-set);
      read (fp, buf,32);
      找到字模開始位置,并讀入32字節字模數據到內存緩沖區buf中。
      (3)使用輸出函數的16進制輸出格式,把緩沖區buf的內容輸出并記錄下來。本例中獲得的“天驕”字模數據如下:
      天:087ffc 1 010 1014fffe 10 280 280440 4 40820 101020 e o4
      驕:8cfdfo 8 2048 204bfe 48 5048 887e8c4 8 81c 88e48844 88 148898 2 8
      實現程序見附錄程序1。
      二、圖形字模的設計
      由于圖示沒有統一的標準,所以顯示圖形的圖模數據,用手工設計完成。本例中的圖形是公司的徽標,使用11個8×16的西文字符點陣表示圖形。11個西文字符點陣表示的圖模數據見程序中的row1-graph, row2-graph, row3-graph, 分別表示圖1中的第一行,第二行和第三行的圖模數據。
      @@T5S08500.GIF;圖1@@
      三、字模和圖模數據的寫入
      1.可修改的字模表
      EGA配有的顯示存儲器分成4個獨立區段,稱為4個頁面。在文本方式下頁面0和頁面1分放屏幕字符的ASCII碼和屬性字節,而頁面2則用來存放字模表。EGA的字模表本來是存儲在ROM中的,但當每次初始化文本方式時,EGA的BIOS會把字模表拷貝到顯示存儲器的頁面2中,由于字模表已移到RAM中,用戶程序就能夠對字模進行存取和修改了。
      2.字模表的結構
      EGA的字符寬度固定為8個像素,字符高度允許從1到32范圍取值,字模表是根據不間的字符集分塊存儲的,每個字符集內則按字符的ASCII碼值從小到大的順序排列。每個字符固定占有32B,分別對應字模從上到下的32個掃描行。但并非所有的掃描行全部使用,視不同的顯示模式使用其中一部分掃描行。
      因此,16×16點陣的漢字字模占用2個西文字符,而圖形實現則視情況占用若干個西文字符。
      3.字模的裝入
      字模和圖模數據的寫入可通過BIOS INT 10H子功能11h來實現。
      輸入參數:AH=11H
      AL=0
      ES: BP=字模數據地址
      CX=裝入字符個數(1~256)
      DX=起始字符(0~255)
      BL=字符集序號(0~3)
      BH=字符高度(1~32)
      其中,字模數據地址是程序中的字模數據區的首地址。而起始字符是字模數據寫入顯示緩沖區開始的位置。
      四、漢字及圖形的彩色顯示
      1.西文字符的顯示原理
      輸出文本時,頁面0存入要輸出字符的ASCII碼值,頁面1存入字符屬性。由頁面0的ASCII碼值索引到頁面2的字符發生器,再結合頁面1的屬性便可在屏幕上顯示相應的字符,如圖2所示
      @@T5S08501.GIF;圖2@@
      2.漢字及圖形的顯示
      利用西文字符的顯示原理,使得字模未修改前應顯示的西文字符顯示成修改后的漢字字模或圖模,通過使用被修改過的數個西文字符字模,顯示漢字或圖形。
      3.顯示輸出
      BIOS INT10的子功能13H完成字符的輸出。
      輸入參數:AH=13H
      AL=1
      BL=字符屬性
      CX=顯示字符個數
      DH=顯示字符的行號
      DL=顯示字符的列號
      ES: BP=顯示字符串的首地址
      其中,顯示字符串的開始字符由用戶在頁面0的ASCII碼空間內可以任意取值,字符屬性可以
      設定顯示的顏色。實現程序見程序2。
      程序1
      #include "stdio.h"
      #include "fcntl.h"
      unsigned char *f="天驕";
      int fp;
      main()
      {
      unsigned int i,c1,c2,t=0;
      int i1,i2,i3;
      long L;
      unsigned char buf[32];
      fp=open("g:\wps\cclibj.dot",O-RDWR|O-BINARY);
      if(fp==-1){cputs("error on open cclib !");
      exit(0);}
      while ((i=*f++)!=0)
      {
      if(i>0xa0)
      if(t==0)
      {
      c1=(i-0xa0)*94;
      t++;}
      else
      {
      c2=i-0xa0+c1-659;
      t=0;
      l=c2*32L;
      lseek(fp,l,SEEK-SET);
      read(fp,buf,32);
      printf("hex code:\n");
      for (i=0;i<32;i++)
      if(i==16){printf("%\n",buf[i]);}
      else printf("%x",buf[i]);
      printf("\n");
      getch();
      };
      }
      }
      程序2
      cseg segment para public'code'
      assume cs:cseg
      org 100h
      main proc near
      start: mov ax, cseg

      >mov es,ax
      mov ax,0003h
      int 10h
      mov ax,1100h
      mov bh,16
      mov bl,0
      mov cx,3
      mov dx,130
      lea bp,row1-grahh
      int 10h
      mov cx,4
      mov dx,133
      lea bp,row2-graph
      int 10h
      mov cx,5
      mov dx,137
      lea bp,row3-graph
      int 10h
      mov cx,2
      mov dx,142
      lea bp,tian
      int 10h
      mvo cx,2
      mov dx,144
      lea bp,jiao
      int 10h
      mov ax,1103h
      mov bl,00000000b
      int 10h
      mov ax,1301h
      mov bh,0
      mov bl,01h
      mov dl,2
      mov dh,1
      mov cx,1
      lop: lea bp,hd
      int 10h
      inc dl
      cmp dl,24
      jnz lop
      mov dl,2
      inc dh
      cmp dh,7
      jnz lop
      mov bl,17h
      mov cx,3
      mov dh,2
      mov dl,12
      lea bp,str1
      int 10h
      mov cx,4
      mov dh,3
      mov dl,12
      lea bp,str2
      int 10h
      mov cx,5
      mov dh,4
      mov dl,10
      lea bp,str3
      int 10h
      mov cx,2
      mov dh,3
      mov dl,4
      lea bp,ws1
      int 10h
      mov cx,2
      mov dh,3
      mov dl,20
      lea bp,ws2
      int 10h
      mov ax,0003h
      int 10h
      main endp
      row1-graph db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,
      00h,
      00h,01h
      db 00h,00h,00h,04h,04h,0ch,00h,00h,00h,38h,3eh,71h,00h,00h,00h,0f0h
      db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,0c0h,70h,38h,1ch,0eh
      row2-graph db 01h,03h,00h,00h,00h,07h,0fh,0fh,00h,00h,00h,3fh,7fh,
      7fh,
      00h,00h
      db 0f0h,0f0h,00h,00h,00h,0f0h,0f0h,0e0h,00h,00h,00h,0e0h,0e0h,0c0h,00h,00
      h
      db 0eh,0fh,0fh,07h,07h,03h,03h,03h,07h,07h,0fh,0fh,1fh,1fh,3fh,3fh
      db 00h,00h,00h,00h,80h,80h,80h,80h,0c0h,0c0h,0c0h,0c0h,0c0h,80h,80h,80h
      row3-graph db 00h,00h,00h,00h,00h,00h,00h,01h,01h,03h,00h,00
      h,00h,
      00h,00h,00h
      db 00h,7fh,7fh,0ffh,00h,00h,00h,0ffh,0ffh,0ffh,00h,00h,00h,00h,00h,00h
      db 00h,0ffh,0ffh,0ffh,00h,00h,00h,0ffh,0ffh,0ffh,00h,00h,00h,00h,00h,00h
      db 00h,0c3h,0ffh,09fh,0fh,0fh,07h,83h,81h,01h,00h,00h,00h,00h,00h,00h
      db 0ffh,0ffh,0ffh,0feh,0feh,0fch,0f8h,0f0h,0c0h,00h,00h,00h,00h,00h,00h
      tian db 00h,7fh,01h,01h,01h,01h,0ffh,01h,02h,02h,04h,04h,08
      h,10
      h,20h,0c0h
      db 00h,0fch,00h,00h,00h,04h,0feh,00h,80h,80h,40h,40h,20h,10h,0eh,04h
      jiao db 08h,0fdh,08h,48h,4bh,48h,48h,49h,7eh,04h,1ch,0e4h,4
      4h,1
      4h,09h,02h
      db 0ch,0f0h,20h,20h,0feh,50h,88h,06h,8ch,88h,88h,88h,88h,88h,08h,08h
      str1 db 130,131,132
      str2 db 133,134,135,136
      str3 db 137,138,139,140,141
      ws1 db 142,143
      ws2 db 144,145
      hddb 219
      cseg ends
      end start 


      【文本方式下圖形提示界面制作】相關文章:

      Linux下的GTK圖形界面編程08-06

      圖形LCD模塊的菜單方式人機交互界面08-06

      可移植的256色圖形用戶界面的設計08-06

      新課程下的初中物理教學方式08-01

      略談新課程背景下的課程導入方式08-01

      Word窗口的使用界面08-16

      求組合圖形面積的基本解法與思路(下)08-17

      嵌入式圖形用戶界面在S3C44B0X上的移植08-19

      對基于Internet環境下的協同式教學方式的探08-06

      主站蜘蛛池模板: 亚洲av免费看一区二区| 亚洲乱码一二三四区国产| 中文字幕日韩精品国产| 久久精品国产99国产精品澳门| 粉嫩av蜜臀一区二区三区| 高清国产一区二区无遮挡| 欧美黑人巨大videos精品| 免费特黄夫妻生活片| 亚洲一区精品视频在线| 亚洲国产午夜精品理论片| 精品国产午夜福利在线观看| 国产欧美综合在线观看第十页| 午夜毛片不卡免费观看视频| 最新国产精品亚洲| 韩国免费a级毛片久久| 亚洲国产精品一区二区第一页| 亚洲av天堂综合网久久| 91密桃精品国产91久久| 国产剧情福利一区二区麻豆| 天堂久久天堂av色综合| 色综合天天综合网国产人| 蜜桃臀av在线一区二区| 国产仑乱无码内谢| 亚洲精品福利一区二区三区蜜桃| 免费无码黄十八禁网站| 三级国产在线观看| 91久久国产成人免费观看| 亚洲全网成人资源在线观看| 日韩大片高清播放器| 国产午夜精品理论大片| 久久99精品久久久久久青青| 亚洲av无码专区在线亚| 久久99精品久久久久久青青| 亚洲精品国产av成拍色拍个| 人人玩人人添人人澡超碰| 亚洲欧洲色图片网站| 中文字幕乱码中文乱码毛片| 精品黄色av一区二区三区| 精品在免费线中文字幕久久| 乱女乱妇熟女熟妇综合网| 插入中文字幕在线一区二区三区|