![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 14:54 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 显示汉字的源程序 |
| 可打印版本 3,398 / 28 |
| 第1楼 qb45 | 发表于 2003-09-23 00:00 |
| 高级用户 发帖 194 积分 677 | |
|
显示汉字的源程序 本程序需要UCDOS的汉字库,文件名:HZK16
如果要在自己的程序中使用,可以提取部分字模在程序中使用! 以下是程序代码: OPEN "asc16" FOR BINARY AS #2 OPEN "hzk16" FOR BINARY AS #1 IF LOF(1) = 0 THEN PRINT "没有汉字库! ":END SCREEN 12 hz1$ = "微软专用操作系统安装工具" hz 1, 100, hz1$, 11 SUB hz (x0, y0, hz.word$, hzcol) REM 显示汉字的子程序 savex0 = x0: savey0 = y0 FOR now = 1 TO LEN(hz.word$) qu = ASC(MID$(hz.word$, now, 1)) IF qu >= 161 THEN now = now + 1 IF now > LEN(hz.word$) THEN EXIT FOR wei = ASC(MID$(hz.word$, now, 1)) ps& = ((qu - 161) * 94& + wei - 161) * 32& + 1 SEEK #1, ps& zimo$ = INPUT$(32, 1) num = 1 FOR y = 0 TO 15 chr1$ = MID$(zimo$, num, 1) num = num + 1 chr2$ = MID$(zimo$, num, 1) num = num + 1 chr3$ = chr2$ + chr1$ LINE (x0, y0 + y)-STEP(15, 0), hzcol, , CVI(chr3$) NEXT y x0 = x0 + 16 ELSE SEEK #2, qu * 16 zimo$ = INPUT$(16, 2) FOR y = 1 TO 16 zmchr$ = CHR$(0) + MID$(zimo$, y, 1) LINE (x0, y0 + y)-STEP(15, 0), hzcol, , CVI(zmchr$) NEXT y x0 = x0 + 8 END IF NEXT now x0 = savex0: y0 = savey0 END SUB |
|
| 第2楼 qb45 | 发表于 2003-09-30 00:00 |
| 高级用户 发帖 194 积分 677 | |
|
UCDOS 的HZK16字库是一个16*16的点阵,每个字模32个字节,如果把他化成二进制排成16行,你会看到一个汉字的雏形。
算了,不写了。。。。。。。。。。。。。搞原创真累!!!!!!!!!! 又没人回铁 ! |
|
| 第3楼 pfox | 发表于 2003-09-30 00:00 |
| 银牌会员 发帖 446 积分 1,451 | |
以下是引用QB45在2003-9-30 0:42:59的发言: 简体字库有部分是16*15的点阵字库,能否制作一个提取16*15点阵字库的16进制点阵信息的程序?最好能够提供16进制及2进制两种提取方法。 |
|
| 第4楼 lemonhall | 发表于 2003-10-02 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
支持原创,可是这些源程序在DOS下都有源程序代码,而且
QB45啊,我明白你喜欢BASIC的心情。但是,将很多C源码 翻译成QB码好象有些。。。。。。 毕竟用QB45直接去显示汉字是超超超慢的。。。。。 特别是在我的4M486上跑你的程序。 这些低级的调用还是建议写C代码,改进原来代码的可移植性 和可靠性,封装成LIB或者使用C++增加它的复用性都是不错 的方向。 |
|
| 第5楼 lemonhall | 发表于 2003-10-02 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
另外表示支持的是:
好象你写的这些程序是可以用来开发安装程序的,对吧? 如果真的那么喜欢QB45也无妨,毕竟今天像我还使用486的人不多了。 那么请在源程序上加些注释吧,将函数封装起来,写上INCLUDE文件, 以后当你没有耐心再开发这个安装系统的时候,其他人可以轻松接手啊! 另外的一个建议就是,尽早使用RCS类似的版本控制工具,为明天的工作 打下基础。加油啊!!!!!!!!!!!!!!!!!!!!!!!!! |
|
| 第6楼 cn_archer | 发表于 2003-10-02 00:00 |
| 元老会员 发帖 991 积分 2,903 来自 福建省 | |
|
支持支持!老兄如果有原创发表,偶一定回帖。:)
|
|
| 第7楼 iceboy | 发表于 2003-10-03 00:00 |
| 银牌会员 发帖 512 积分 1,681 | |
|
我把它简单地封装了一下... 我把它简单地封装了一下,加入了自动换行,自动改变当前 POS... 可以和 PRINT 语句混用而不会导致字符重叠... 语句名称 PRINTH,直接调用,不过不能用分号...
文件为 QBASIC 程序,扩展名是 BAS,不过是两个 SUB 调用语法: PRINTH "要输入的汉字" 打开附件 |
|
| 第8楼 lemonhall | 发表于 2003-10-04 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
支持,如果是安装用的PRINTH,,如果能有几个常用的
颜色宏定义,那么就可以进入单元测试了,最后封成LIB, 供所有BASIC开发者使用(不清楚UCDOS的DK里有没有现成的??) |
|
| 第9楼 qb45 | 发表于 2003-10-08 00:00 |
| 高级用户 发帖 194 积分 677 | |
以下是引用lemonhall在2003-10-2 18:17:46的发言: C语言我根本不会啊,不过我很想学阿。我只会BASIC。 在486的电脑上要提高显示速度可以采取一些技术手段,如:直接写显存,或者将字模读入内存,加载磁盘缓冲。 |
|
| 第10楼 xy_god | 发表于 2003-10-08 00:00 |
| 中级用户 发帖 56 积分 276 | |
|
我以前看过一个QB的显示汉字的程序的,不过我还是希望QB45赶快学会C,不用多长时间的
,我就是从QB转向C的,但是最重要的是明白微机原理,其实我觉得明白微机原理后,用BASIC开发操作系统也是可行的,呵呵!真的,不是危言耸听哦! |
|
| 第11楼 qb45 | 发表于 2003-10-13 00:00 |
| 高级用户 发帖 194 积分 677 | |
以下是引用pfox在2003-9-30 10:01:51的发言: 我这里没有16*15的点阵字库,有的话,我可以试试,你能提供这个字库吗?? |
|
| 第12楼 pfox | 发表于 2003-10-14 00:00 |
| 银牌会员 发帖 446 积分 1,451 | |
| 第13楼 qb45 | 发表于 2003-10-14 00:00 |
| 高级用户 发帖 194 积分 677 | |
|
pfox, 你发的字库文件我已经分析过了,源程序如下所示,实际上这不是一个16*15 的点阵字库,而是14*14的点阵字库。由于你的误导,让我走了不少弯路!不知你从那里弄来的这个字库文件!他的顺序是按偏旁部首排列的!
下面是源程序 input "请输入16*15点阵字库的完整的路径与文件名_ ",file$ OPEN file$ FOR BINARY AS #1 SCREEN 12 FOR i1 = 0 TO 28 x0 = 0 FOR i = 1 TO 42 SEEK #1, 24709 + (i + i1 * 42) * 28 zimo$ = INPUT$(28, 1) num = 1 y0 = i1 * 16 FOR y = 0 TO 13 chr1$ = MID$(zimo$, num, 1) num = num + 1 chr2$ = MID$(zimo$, num, 1) num = num + 1 chr3$ = chr2$ + chr1$ LINE (x0, y0 + y)-STEP(14, 0), 7, , CVI(chr3$) NEXT y x0 = x0 + 15 NEXT i NEXT i1 close end |
|
| 第14楼 Roy | 发表于 2003-10-14 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
以下是引用QB45在2003-10-13 19:22:14的发言:這個是et3中文系統的16*15(還是14*14呢?...)的点阵字库打开附件 |
|
| 第15楼 Roy | 发表于 2003-10-14 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |