查字典论文网 >> 文本方式下图形提示界面制作

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

小编:

文本方式下图形提示界面制作 文本方式下图形提示界面制作 文本方式下图形提示界面制作 在商品化的软件中,有大量的提示信息界面以使用户清楚软件的状态和运行情况,使用汉字提示可以大大方便不懂西文提示的用户。但如果少量的汉字提示在图形方式下实现,将使程序的设计复杂化,而且图形方式比文本方式的实现要慢得多。本文使用EGA文本方式下汉字显示原理,设计制做了一个微机驻留报警系统的封面提示信息,提示制做人、版权、公司徽标等信息,实现了汉字,图形,字符的彩色提示界面。下面讨论实现的具体方法及原理。

一、汉字字模数据的提取

文本方式下的汉字显示是通过用汉字字模改写西文字符字模的方法实现的,所以应首先获得汉字字模数据。

各种汉字操作系统可以提供不同大小和字体的汉字字模,本文作为一个实例,从金山DOS的cclibj.dot的字库中获得所要显示的楷体汉字字模的16×16点阵数据。

字库的读取用C语言实现,具体方法如下。

(1)把需要显示的汉字作为同字符同样看待的字符串赋值于一个内存变量f,汉字字符串的值在WPS的N命令下输入,然后转入C语言进行编程。

(2)在C语言的环境中汉字字符串的值是国标码,字模的读取,就是利用所要显示的汉字国标码计算此汉字在字库中对应的字模的位置,然后读取字库中的32字节的字模数据至内存缓冲区buf中。

C语言中汉字串的国标码与cclibj.dot字库中一条字符记录具有如下的对应关系:。l为长整型数,用于字模查找定位。

C1=(i-a0H)+94

C2=i-a0H+c1-659

l=C2*32L

利用函数:

lseek(fp, l, seek-set);

read (fp, buf,

3

2);

找到字模开始位置,并读入32字节字模数据到内存缓冲区buf中。

(3)使用输出函数的16进制输出格式,把缓冲区buf的内容输出并记录下来。本例中获得的“天骄”字模数据如下:骄:8cfdfo 8 2048 204bfe 48 5048 887e8c4 8 81c 88e48844 88 148898 2 8

实现程序见附录程序1。

二、图形字模的设计@@T5S08500.GIF;图1@@

三、字模和图模数据的写入

1.可修改的字模表2.字模表的结构因此,16×16点阵的汉字字模占用2个西文字符,而图形实现则视情况占用若干个西文字符。

3.字模的装入

字模和图模数据的写入可通过BIOS INT 10H子功能11h来实现。

输入参数:AH=11H

AL=0

ES: BP=字模数据地址DX=起始字符(0~2

5

5)

BL=字符集序号(0~

3)其中,字模数据地址是程序中的字模数据区的首地址。而起始字符是字模数据写入显示缓冲区开始的位置。

四、汉字及图形的彩色显示

1.西文字符的显示原理@@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()

{int i1,i2,i3;

long L;

unsigned char buf[32];

fp=open("g:wpscclibj.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,

3

2);

printf("hex code:n");

for (i=0;i<32;i++)

if(i==

1

6){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,00hh,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,141ws2 db 144,145

hddb 219

cseg ends

end start

热点推荐

上一篇:基于机器学习的用户行为异常检测

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文