社区
非技术区
帖子详情
谁有《C 高级实用程序设计》- C程序汉字显示技术 那一章的源代码
wfu
2005-10-15 10:28:33
谁有《C 高级实用程序设计》- C程序汉字显示技术 那一章的源代码?
出差在外,那本书也没带,网上没有搜索到,
那位兄弟有,给发一份。
...全文
177
11
打赏
收藏
谁有《C 高级实用程序设计》- C程序汉字显示技术 那一章的源代码
谁有《C 高级实用程序设计》- C程序汉字显示技术 那一章的源代码? 出差在外,那本书也没带,网上没有搜索到, 那位兄弟有,给发一份。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
antijpn
2005-10-16
打赏
举报
回复
非技术
Kvci
2005-10-16
打赏
举报
回复
http://www.isee.zju.edu.cn/hmx/clab/
UCDOS的汉字库下载:(注意,下载后的文件名可能以txt结尾,但是不是txt文件)
这个网站C内容不错
http://www.isee.zju.edu.cn/hmx/clab/
Kvci
2005-10-16
打赏
举报
回复
JF呀
mostideal
2005-10-15
打赏
举报
回复
我看了下我收集的书。没有那个。呵呵。
jsjjms
2005-10-15
打赏
举报
回复
能不能给我一份呀??
50分和换??呵呵。
jsjjms@sohu.com,谢谢!
K
2005-10-15
打赏
举报
回复
google
wfu
2005-10-15
打赏
举报
回复
呵呵,找到代码了
现在在找字库文件hzk16
wfu
2005-10-15
打赏
举报
回复
thanks Kvci(学,忍,奋、强、惊、成、野蛮(理想))
我也找到了
jsjjms
2005-10-15
打赏
举报
回复
谢谢!
Kvci
2005-10-15
打赏
举报
回复
图形模式下的汉字显示
作者:unknown 更新时间: 2005-03-13
我们在编写一些应用软件时,为了使软件更为通俗浅显、易学易用,具备汉字的用户界面是必不可少的条件。在文本模式下,只要有汉字操作系统的支持,显示汉字是不成问题的。只要用printf或cprintf就可以了。#include void main(){printf("我正在学习C语言!");}
在图形模式下显示汉字就稍稍麻烦些。可幸的是有很多人从事这一问题的研究,并开发了一些用于汉字显示的函数。这些函数不需要汉字系统的支持,但用到其中的字库文件。如UCDOS的HZK16。
汉字显示的第一步是打开字库文件。
函数: int OpenHz(const char *Hz16Path); 功能:打开字库文件Hz16Pathint handle; /*打开的字库文件指针*/int OpenHz(const char *Hz16Path){return (handle=open(Hz16Path,O_RDONLY|O_BINARY));} 打开字库文件后,就可以用下面介绍的函数显示16点阵的汉字。
函数: int WrtHz16(int x,int y,int z,int color,char *p); 功能:在(x,y)用color颜色显示汉字串p,汉字之间的空格数为z。intWrtHz16(int x, int y,int z,int color,char *p)
{
unsigned int i,c1,c2,f=0; /*x,y:write at (x,y);*/
int rec,i1,i2,i3; /*z:space between;*/
long l; /*color:txt color*/
char by[32]; /*p:HZ str*/
if( handle<0 ) return -1; while((i=*p++)!=0){
if(i>0xa1)
if(f==0){
c1=(i-0xa1)&0x07f;
f=1;
}
else{
c2=(i-0xa1)&0x07f;
f=0;
rec=c1*94+c2;
l=rec*32L;
lseek(handle,l,SEEK_SET);
read(handle,by,32);
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(GetBit(by[i1*2+i2],7-i3))
putpixel(x+i2*8+i3,y+i1,color);
x=x+z+16;
}
}
return(x);
}
函数GetBit定义如下:
函数: int GetBit(unsigned char c,int n); 功能:取得汉字的点阵数据。
int GetBit(unsigned char c,int n)
{
return((c>>n)&1);
}
汉字显示结束,应该关闭字库文件。
void CloseHz(void)
{
close( handle );
}
#include "\Caic\Include\Hz.h"
#include
#include const char* Hz16Path = "\\UCDOS\\Hzk16.";
const char* HzStr = "苦丁香C语言辅助学习软件";
void main(){
int gr=DETECT,gm;
initgraph(&gr,&gm,"\\Caic\\Bgi");
OpenHz( Hz16Path );
Wrt16Hz(20,20,4,RED,HzStr);
CloseHz();
getch();
closegraph();
}显示24点阵及放大汉字
下面探讨一下如何显示24点阵及放大汉字。24点阵字库也可在任意一种汉字系统中找到。如UCDOS的HZK24S。
函数: int WrtHz24(int x,int y,int z,int color,int m,\int n,char *p); 功能:显示24点阵及放大汉字。
int WrtHz24(int x,int y,int z,int color,int m,int n,char *p)
{
unsigned int i,c1,c2,f=0; /*z: 汉字字符间的空格*/
int i1,i2,i3,i4,i5,rec; /*x,y: 先是位置(x,y)*/
long l; /*color:汉字颜色*/
char by[72]; /*m: x 方向的放大倍数*/
/*n: y 方向的放大倍数*/
if( handle<0 ) return -1; /*p: 显示汉字串*/ while((i=*p++)!=0){
if(i>0xa1)
if(f==0){
c1=(i-0xa1)&0x7f;
f=1;
}
else{
c2=(i-0xa1)&0x7f;
f=0;
rec=(c1-15)*94+c2;
l=rec*72L;
lseek(handle,l,SEEK_SET);
read(handle,by,72);
for(i1=0;i1<24*m;i1=i1+m)
for(i4=0;i4 for(i2=0;i2<=2;i2++)
for(i3=0;i3<8;i3++)
if(GetBit(by[i1/m*3+i2],7-i3))
for(i5=0;i5 putpixel(x+i1+i4,y+i2*8*n+i3*n+i5,color);
x=x+24*m+z;
}
}
return(x);
} 使用Wrt24Hz的例子:#include "\Caic\Include\Hz.h"
#include
#include const char* Hz24Path = "C:\\Ucdos\\fnt\\hzk24s."
const char* HzStr = "苦丁香C语言辅助学习软件";
void main(){
int gr=DETECT,gm;
initgraph(&gr,gm,"\\Caic\\Bgi");
OpenHz( Hz24Path );
Wrt24Hz(20,20, /*先是在(x,y)*/
4, /*汉字间的空格为4*/
RED, /*用红色显示*/
2, /*x 方向放大2倍*/
4, /*y 方向放大4倍*/
HzStr); /*显示字符串*/
CloseHz();
getch();
closegraph();
}
Kvci
2005-10-15
打赏
举报
回复
http://www.isee.zju.edu.cn/hmx/clab/cnfonts.htm
UCDOS的汉字库下载:(注意,下载后的文件名可能以txt结尾,但是不是txt文件)
8*16点阵的ASC字库 ASC16
16*16点阵的汉字库 HZK16
24*24点阵的宋体字库 HZK24S
24*24点阵的仿宋体字库 HZK24F
24*24点阵的黑体字库 HZK24H
24*24点阵的楷体字库 HZK24K
24*24点阵特殊字库 HZK24T
核心Java
程序
设计
技术
《Core Java》这本书虽然讨论的是基础Java
技术
,但它翔实全面的风格其实对每一个对
程序
设计
技术
感兴趣专业和非专业人士都会有价值。 第一,没有任何
程序
设计
经验的初学者。相比于其他主流语言,Java是经过...
Objective-C与Foundation Framework
程序
设计
视频课程
本课程主要介绍了Objective-C中的核心特性,以及Foundation Framework的核心API。
ajax教程 在线视频培训教程(含课程
源代码
)
讲解ajax的工作原理和实例全国省市区3级联动 01-ajax概要和第一个示例 02-AJAX 工作原理 03-创建 XMLHttpRequest 对象 04-使用phpstorm工具来开发 05-Get方法和读取中文乱码解决 06-Post方法和小坑的解决 07-...
Objective-C 快速入门
本课程演示了Objective-C的基本使用,课程由浅入深,从开发环境的搭建开始,到代码的编写,代码的分析讲解,再到对代码编译成的二进制的进一步分析,力求让学员快速掌握Objective-C,为学员在苹果平台开发软件以及...
iOS开发之Objective-C编程基础
本系列课程视频提供iOS培训之Objective-C基础视频,第一个Obj-C
程序
Hello world,面向对象编程,面向过程编程,类和对象,self使用详解, property基础,synthesize基础,propertyNam,Property的setter和getter,...
非技术区
15,440
社区成员
58,165
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章