图形模式下的汉字显示

我们在编写一些应用软件时,为了使软件更为通俗浅显、易学易用,具备汉字的用户界面是必不可少的条件。在文本模式下,只要有汉字操作系统的支持,显示汉字是不成问题的。只要用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);
}

时间: 2024-10-26 05:36:08

图形模式下的汉字显示的相关文章

string-Android应用图标在不同语言模式下如何在launcher中显示不同的名称

问题描述 Android应用图标在不同语言模式下如何在launcher中显示不同的名称 谷歌自带Downloads应用,要在不同的语言模式下显示不同的图标名称,例如:当系统是在中文模式,Downloads应用图标显示的名字是"下载",在英文模式下,应用名称显示的是"downloads",在德文模式下,要显示的名称是"Herunterladen",我在values-de那个目录下的strings.xml文件中修改""Herunt

切换ubuntu下图形模式与linux命令行模式

  本文讲述了linux下图形模式与linux命令行模式切换要领.下面将对此执行 细致说明: ctrl+alt+f2 命令行模式 ctrl+alt+f7 图形模式 我安装的是ubuntu版本,其他版本是不是这样没有研究过. 下面是开机要进入linux命令行哪种模式的设定:(我在我装的ubuntu里看了下没有inittab文件,真奇怪) $gedit /etc/inittab 例如,把id:5:initdefault中的5改为3 ,就是linux进入系统时,原来是直接进入x界面模式的,现在就直接进

fck编辑器在ie10兼容模式下插入图片不能正常显示

问题描述 fck编辑器在ie10兼容模式下插入图片不能正常显示.求解答.谢谢了. 解决方案 建议使用CKEditor(fck在09年就不用了)或者百度的UEditor.

log4j在info模式下显示mybatis的sql

问题描述 log4j在info模式下显示mybatis的sql 我想显示mybatis的sql语句,但是如果把log4j的级别改成debug.后台数据源一直不断的打印信息,能在info下面看mybatis的sql信息吗 解决方案 http://my.oschina.net/abian/blog/124177

360极速模式下可用的js实现按钮点击显示隐藏控件

问题描述 360极速模式下可用的js实现按钮点击显示隐藏控件 网上找了一些都只能在兼容模式或IE模式下实现 用360极速浏览器的极速模式无法实现 求一段可以在360浏览器里生效的代码 实现点击按钮隐藏一些控件(如div)并且显示另一些控件 解决方案 解决 chrome 浏览器对 div 的 display : none 不支持 试了很久,发现在style设置display:none的时候,IE是可以的,但是chrome不行 [html] view plaincopy在CODE上查看代码片派生到我

c# listview list模式下文本显示问题 长文本完全显示,不要出现省略号

问题描述 图1是listview组件的效果,在list模式下,可以看到如果item的text字数比较多,就不会全部显示,出现省略号.图2是windows资源管理器的效果,每列的宽度是根据这列最长字数那一项调整的.这就是我要实现的效果.注意必须是List模式下,不是Details模式(网上找得到的都是Details模式下设置的列宽,这个就太简单了).搜索了好久都找不到实现的方法,真的没办法了.难不成真的要完全重绘整个listview?太崩溃了!望各位大神指点!图1图2 解决方案 解决方案二:忘了放

cmd 命令行模式下输出中文时显示乱码的解决方案

cmd 命令行模式下输出中文时显示乱码的解决方案 因为发现默认值->属性窗口中已是936了,只好通过注册表直接改动:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe下的项CodePage项值改为十进制"936"值或 十六进制"000003a8"值.说明一下: 十六进制"000003a8"或十进制"936",表示"936 (ANSI/OEM - 简体中

Linux学习之CentOS(二十二)--进入单用户模式下修改Root用户的密码_Linux

在上一篇随笔里面详细讲解了Linux系统的启动过程.,我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab 这个文件我们就能看到: [root@xiaoluo ~]# cat /etc/inittab # inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # #

《超越需求:敏捷思维模式下的分析》目录—导读

版权超越需求:敏捷思维模式下的分析• 著 [美] Kent J. McDonald 译 霍金健 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 内容提要超越需求:敏捷思维模式下的分析项目成败的关键在于是否在"做正确的事情",而本书正是从分析的角度帮助项