标题: 文本方式下显示汉字的源程序
[打印本页]
作者: qb45
时间: 2003-10-30 00:00
标题: 文本方式下显示汉字的源程序
rem $INCLUDE: 'qb.bi'
CLS
DIM SHARED ax AS INTEGER, bx AS INTEGER, cx AS INTEGER, dx AS INTEGER, es AS INTEGER, bp AS INTEGER
DIM test%(64)
es = VARSEG(test%(32))
DEF SEG = es
FOR i = 1 TO 96
READ t
POKE i, t
NEXT i
DEF SEG
bp = 1
ax = &H1100
bx = &H1000
cx = 6
dx = &HCC
int10
FOR i = 0 TO 5
PRINT CHR$(&HCC + i);
NEXT i
END
DATA 0 , 32 , 19 , 16 , 0 , 7 , 240 , 16 , 17 , 16 , 23 , 16 , 20 , 24 , 16 , 3
DATA 32 , 40 , 252 , 32 , 32 , 254 , 146 , 84 , 16 , 148 , 254 , 32 , 32 , 80 , 140 , 4
DATA 2 , 1 , 63 , 32 , 64 , 31 , 0 , 0 , 1 , 255 , 1 , 1 , 1 , 1 , 5 , 2
DATA 0 , 0 , 252 , 4 , 8 , 224 , 64 , 128 , 4 , 254 , 0 , 0 , 0 , 0 , 0 , 0
DATA 16 , 16 , 35 , 34 , 74 , 251 , 18 , 34 , 67 , 246 , 74 , 3 , 26 , 226 , 66 , 2
DATA 128 , 72 , 252 , 8 , 8 , 248 , 0 , 4 , 254 , 148 , 148 , 252 , 148 , 148 , 148 , 12
SUB int10
DIM InRegs AS RegTypeX
DIM OutRegs AS RegTypeX
InRegs.ax = ax
InRegs.bx = bx
InRegs.cx = cx
InRegs.dx = dx
InRegs.es = es
InRegs.bp = bp
INTERRUPTX &H10, InRegs, OutRegs
ax = OutRegs.ax
bx = OutRegs.bx
cx = OutRegs.cx
dx = OutRegs.dx
es = OutRegs.es
bp = OutRegs.bp
END SUB
作者: 凌晨一点
时间: 2003-10-30 00:00
OK
作者: Wengier
时间: 2003-10-31 00:00
不知此程序能显示哪些汉字?应该不是所有汉字吧。。
作者: qb45
时间: 2003-10-31 00:00
能显示所有的汉字,不过要自己做一个提取字模的工具.
可以把显示汉字的源程序改动一下,以便提取字模!
替换DATA里面的数据,就可以显示别的汉字了
但是同屏显示的汉字数量是有限制的,因为只有128个扩展字芙!
作者: Wengier
时间: 2003-10-31 00:00
那有没有现成的兼容的提取字模的工具呢?
作者: qb45
时间: 2003-11-3 00:00
''请不要输入英文字母
OPEN "hzk16" FOR BINARY AS #1
input "请输入要转换的汉字= ",hz1$
hz 100, 100, hz1$, 7
PRINT "字模提取成功ok!!!"
SUB hz (x0, y0, hz.word$, hzcol)
leng = LEN(hz.word$)
now = 1
OPEN "hz.dat" FOR OUTPUT AS #3 ''字模文件名为HZ.DAT
PRINT #3, hz.word$
PRINT #3, "data";
DO
qu = ASC(MID$(hz.word$, now, 1))
now = now + 1
wei = ASC(MID$(hz.word$, now, 1))
now = now + 1
IF qu > 161 AND wei > 161 THEN
ps& = ((qu - 161) * 94& + wei - 161) * 32& + 1
SEEK #1, ps&
zimo$ = INPUT$(32, 1)
num = 1
FOR i = 1 TO 2
FOR y = 0 TO 15
chr1$ = MID$(zimo$, num, 1)
num = num + 1
chr2$ = MID$(zimo$, num, 1)
num = num + 1
chr3$ = chr2$ + chr1$
IF i = 2 THEN chr1$ = chr2$
IF y < 15 THEN PRINT #3, ASC(chr1$); ","; ELSE PRINT #3, ASC(chr1$)
'' LINE (x0, y0 + y)-STEP(15, 0), hzcol, , ASC(chr1$)
NEXT y
num = 1
x0 = x0 + 8
PRINT #3, "data";
NEXT i
END IF
LOOP UNTIL now = leng + 1
END SUB
作者: 算了
时间: 2003-12-29 00:00
你用的是dos下自绘字模的中断吧,为什么要在文本状态下呢?进入图形状态,
把汉字画在屏幕上,能放大缩小,随便定位,灵活很多呀
作者: qb45
时间: 2003-12-30 00:00
因为在文本下还是有些好处的!、
画汉字在我好几年前已经做出来了,可是文本下我现在才做出来!技术上难些,到不是在于代码长短!
作者: spirit
时间: 2004-1-8 00:00
hao
作者: jiaking
时间: 2004-3-17 00:00
编译时提示:type not define,在 DIM InRegs AS RegTypeX 。为什么?
作者: qb45
时间: 2004-3-19 00:00
启动QB的时候请用QB/L如果你想知道详细的情况,请到编程爱好者的QBASIC论坛,有详细的 中断调用的帖子,和如何编译BAS文件的教程!
作者: @yingyong@
时间: 2004-3-21 00:00
真的不错!