注册 登录
编程论坛 C图形专区

在图形模式下怎么输出汉字?

蔡蔡 发布于 2007-07-01 17:12, 1928 次点击
怎么输出汉字呀?
10 回复
#2
beyondabcd2007-07-01 19:06
调用字库
#3
蔡蔡2007-07-01 19:20
回复:(beyondabcd)调用字库
老兄,你也太简单了吧~
能不能讲清楚点呀?
最好再举个例子
#4
beyondabcd2007-07-01 19:44
你在迅雷上找一本C游戏入门到精通的一本书那上讲的很细,对了,还有源码
#5
jig2007-07-01 23:29

LZ可以找到一个现成的例子

在WIN-TC的安装目录下有个中文汉字显示实例,你自己可以去看看源码。

#6
neverTheSame2007-07-04 13:25
#7
yuerhb2007-07-04 16:08
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<process.h>
#define VGA256 0x13
#define TEXT_MODE 0x03

unsigned char far *video_buffer=(char far *)0xA0000000L;

unsigned char bit[8]={128,64,32,16,8,4,2,1};

void Delay(int clicks)
{
unsigned int far *clock=(unsigned int far *)0x0000046CL;
unsigned int now;
now=*clock;
while(abs(*clock-now)<clicks){}
}


void Plot_Pixel_Fast(int x,int y,char color)
{
video_buffer[((y<<8)+(y<<6))+x]=color;
}

void GetHzBit(char ch0,char ch1,char *bitdata)
{
FILE *stream;
long fpos;
fpos=32L*(((unsigned char)ch0-161)*94+((unsigned char)ch1-161));
if((stream=fopen("hzk16","rb"))==NULL){
printf("Open hzk16 error!\\n");
exit(0);
}
fseek(stream, fpos, SEEK_SET);
fread( bitdata, 32, 1, stream);
fclose(stream);
}

void WriteHz(char ch0,char ch1,int x,int y,int color)
{
register int i,j,k;
unsigned vpos;
char bitdata[32];
GetHzBit(ch0,ch1,bitdata);
for(i=0;i<16;i++)
for(j=0;j<8;j++){
if(bitdata[2*i]&bit[j])
Plot_Pixel_Fast(x+j,i+y,color);
if(bitdata[2*i+1]&bit[j])
Plot_Pixel_Fast(x+8+j,i+y,color);
}
}
void WriteHzStr(char *str,int x,int y,int color)
{
int num,i,j,xx;
unsigned char s0,s1;
num=strlen(str);
xx=x;
for(i=0;i<num;i+=2){
WriteHz(str[i],str[i+1],xx,y,color);
xx+=16;
}
}

void Words_Step(char *str,int x,int y,int color,int speed)
{
int num,i,j,xx;
unsigned char s0,s1;
num=strlen(str);
xx=x;
for(i=0;i<num;i+=2){
WriteHz(str[i],str[i+1],xx,y,color);
Delay(speed);
xx+=16;
}
}

void Set_Video_Mode(int mode)
{
union REGS inregs,outregs;
inregs.h.ah=0;
inregs.h.al=(unsigned char)mode;
int86(0x10,&inregs,&outregs);
}

void main(void)
{
Set_Video_Mode(VGA256);
WriteHzStr("按任意键进入中文渐显:",10,100,WHITE);
getch();
Words_Step("现在文字处于渐显状态。",10,130,WHITE,4);
getch();
Set_Video_Mode(TEXT_MODE);
}

这个是我找到的不知道对你有帮助么?
#8
蔡蔡2007-07-04 19:16
我晕了~~输出几个汉字原来这么复杂的
没有什么函数的吗?
#9
cdmalcl2007-07-04 19:43

自己写一个函数以后不就可以直接用了

#10
一笔苍穹2007-07-05 08:33
yuerhb给你的都是函数啊
#11
tandechun2010-05-14 10:35
我给你个最容易的,最容易上手的,在图像模式下显示中文只需几横代码。在这里说不方便,我的Q534234913   电话13457977230
保证把你教会
1