我有一个hzk16.fnt字库,VB怎么写才能读取里面的汉字

本拉灯 2004-09-24 09:47:00
我有一个hzk16.fnt字库,VB怎么写才能读取里面的汉字,
我有一个别人给的程序,但不会,请高手帮忙,搞成VB的

它的储存格式是一个汉字占32个字节,所以得到一个汉字的gb编码后*32就能找到对应汉字字摸的起始位置。16点阵的字一共由16*16=256个点组成,正好需要32个字节来表示,所以32个字节中的每一位是1还是0就代表16*16的方阵的对应位置是否应该点上。基本的算法就是这些,下面是个turbo C的例子供你参考,该例子需要到纯DOS模式下才能执行,主要就是让你能对提取字模有个了解。

#include<io.h>
#include<dos.h>
#include<fcntl.h>
#include<graphics.h>
#include<conio.h>
#define Byte unsigned char
#define Word unsigned int
int flag16;
void dishz();
main()
{
int Driver=CGA,Mode=CGAC2;
initgraph(&Driver,&Mode,"你的turbo图形驱动的目录位置");\\因为要切到图形模式,所以这里需要图形驱动
directvideo=0;
setbkcolor(0);
cleardevice();
dishz();
getch();
closegraph();
return(0);
}
void out16hz(int x,int y,int z, int color,char *p)
{
Word num,QM,WM,flag=0;
int record,i,j,k;
long pointer;
char Bit[32];
while ((num=*p++)!=0)
{
if(num>0xA1)
if (flag==0)
{
QM=(num-0xA1)&0x07F;
flag=1;
}
else
{
WM=(num-0xA1)&0x7F;
flag=0;
record=QM*94+WM;
pointer=record*32L;
lseek(flag16,pointer,SEEK_SET);
read(flag16,Bit,32);
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if (convert(Bit[i*2+j],7-k))
putpixel(x+j*8+k,y+i,color);
x=x+z+16;
}
}
}
int convert(Byte ch,int n)
{
return((ch>>n)&0x01);
}
void dishz()
{
char *str1[]={"汉字显示"};
int x=130,y=85,size=1;
flag16=open("这里是你的16点阵字库文件的位置",O_RDWR|O_BINARY);
if(flag16==-1){printf("can not open hzk16\n");exit(1);}
out16hz(x,y,size,3,*str1);
y+=30;
close(flag16);
}
hzk16.fnt
















open是打开一个文件
lseek是文件内定位
read读取文件内容
convert是自己定义的函数,功能是返回一个字节的某一位
putpixel是在屏幕上画点
initgraph是c里面屏幕初始化函数
setbkcolo设置背景色
cleardevice 清除设备
dishz 是自己定义的,总的一个功能函数
getch是等待输入,目的是让你能看清屏幕上的东西




数字1半角的编码值是31H,你就用31H去乘以32,等出的数就是1在点阵字库中起始数据的位置,从这个位置起读32个字节,然后根据这32个字节中的每一位是0还是1去点,至于这个1点出来是全角形态的1还是半角形态的1,我记不清了,这个是DOS时代的东西,好久没用了。
...全文
485 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
本拉灯 2004-10-05
  • 打赏
  • 举报
回复
ttt
本拉灯 2004-10-04
  • 打赏
  • 举报
回复
ttt
wumylove1234 2004-09-25
  • 打赏
  • 举报
回复
Mark.明天再看.眼痛
本拉灯 2004-09-25
  • 打赏
  • 举报
回复
up
wumylove1234 2004-09-25
  • 打赏
  • 举报
回复
它的储存格式是一个汉字占32个字节,所以得到一个汉字的gb编码后*32就能找到对应汉字字摸的起始位置。

我也不会,呵,就是学习.这里得到GB编码后为什么要*32呢?不是+32吗?

还有,我不会求GB码!

以上两个问题搞清楚后,可以跟据你的算法求一下吧,VB也有二进制读取文件的方法,也有读取的位置以及读取的字节数.高手们顺便解答了我的问题!3Q.
本拉灯 2004-09-25
  • 打赏
  • 举报
回复
怎么搅,UP
ryuginka 2004-09-25
  • 打赏
  • 举报
回复
up
本拉灯 2004-09-25
  • 打赏
  • 举报
回复
wumylove1234(决心不做IT界大板锹)谢谢,
帮忙搅搅
行云边 2004-09-24
  • 打赏
  • 举报
回复
学习
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 【FAST FWR310 无线路由更新程序】是一个专门为FAST FWR310型号无线路由设备设计的固件升级方案,其主要目的在于改善设备的工作表现、纠正已知的系统缺陷或引入全新的操作特性。对无线路由器进行固件更新,实质上是指替换或升级其核心操作系统(即固件),从而使其运行状态得到进一步优化。 在无线路由器的持续使用阶段,用户有时会遭遇若干操作难题,例如网络连接的频繁中断、数据传输速率不高、无线信号覆盖范围有限等情况。针对此类挑战,通过安装新的固件(即刷机包),能够有效应对上述问题,因为新固件或许已经针对这些普遍存在的问题进行了优化处理。不仅如此,固件升级还能开启一些隐藏的功能选项,或者兼容第三方固件,例如OpenWRT,从而让用户能够进行更深入的系统自定义配置及管理。 FWR310 V5.0升级软件20160301是该刷机包的明确版本标识,显示出这是针对FAST FWR310路由器推出的第五代固件,并且发布日期为2016年3月1日。此版本的更新内容可能涵盖以下几个方面: 1. 运行效能的调优:借助于对路由器处理流程与内存分配的改善,能够加快数据交换速率,减少响应时间,从而全面提升网络的工作效能。 2. 安全防护的强化:更新内容中可能融入了对新兴网络安全风险的防御机制,用以保障用户的资料安全。 3. 互操作性的扩展:可能增强了与更多设备及协议的适配能力,比如最新的无线通信标准或设备连接模式。 4. 运行稳定性的提升:修复了可能引发路由器系统崩溃或意外重启的已知故障,延长了设备的稳定运行周期。 5. 新特性集成:或许增添了提升用户体验的功能,例如远程操作控制、家长监管功能、服务质...
内容概要:本文围绕基于混沌系统与DNA编码的彩色图像加密解密体系展开研究,旨在解决传统图像加密算法密钥空间小、抗干扰能力弱等问题。通过结合混沌系统的伪随机性与DNA编码的高维组合特性,构建了多层级、高复杂度的加密框架,实现了对彩色图像RGB三通道的混淆与扩散操作。研究重点包括加密算法的设计与实现、密钥敏感性分析以及抗噪声和抗裁剪性能的系统性测试。实验结果表明,该算法在面对高斯噪声、椒盐噪声及不同面积、位置的图像裁剪攻击时,仍能较好地恢复图像主体结构与核心信息,展现出优良的鲁棒性和实用性。文章还总结了当前研究的不足,并对未来优化方向进行了展望。; 适合人群:具备一定信息安全、图像处理或密码学基础知识的科研人员、研究生及工程技术人员。; 使用场景及目标:①用于高安全性需求下的图像传输与存储场景,如军事通信、医疗影像保护等;②为复合型图像加密技术的研究提供理论支持与实验依据,推动加密算法向高鲁棒性、强抗攻击能力方向发展; 阅读建议:建议读者结合文中提供的理论基础与实验分析,深入理解混沌与DNA编码的融合机制,并可通过复现实验进一步掌握算法细节与性能边界,重点关注抗干扰测试部分以评估其在实际应用中的可靠性。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧