编程c语言中文图形代码,C语言图形编程代码

自己以前编写的C语言图形编程代码

自己以前编写的图形编程代码实现DOS下256BMP图片显示,中文注释,中文汉字显示

写的不好,给大家交流与学习,TC3.0与TC2.0下编译通过,实DOS下才能够运行

VGA256.C文件

/*.................................................*/

#include<stdio.h>

#include<bios.h>

#define maxx 800 /*这里决定了分辨率为800*600,方便屏幕绘图*/

#define maxy 600

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

char color=2;

void vga256()

{

union REGS r;

r.x.bx=0x103; /*这里修改成适合你显卡驱动800*600的中断就可以了,我的是英特尔810的集成显卡驱动*/

r.x.ax=0x4f02;

int86(0x10,&r,&r);

}

void fy(int xx)

{ /*分页*/

union REGS r;

r.x.ax=0x4f05;

r.x.bx=0;

r.x.dx=xx;

int86(0x10,&r,&r);

}

void fast(int x,int y)

{ /*写点程序代码*/

static long i=0;

int xx=0;

static int t=0;

if(x<maxx){

i=y;

i*=maxx;

i+=x;

xx=i>>16;

i&=0xffff;

if(t!=xx) fy(xx);

*(video_buffer+i)=color;

t=xx;

}

}

Hz.C文件

/*.................................................*/

#include<stdio.h>

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

void openhz(char hz0,char hz1,char *bitdata) { /* 打开字庫*/

FILE *st;

long fpos;

fpos=32L*(((unsigned char)hz0-161)*94+((unsigned char)hz1-161));

if((st=fopen("hzk16","rb"))==NULL) /*打开字库文件hzk16,该文件可以在UCDOS里面找到*/

{

printf("open File error!\n");

exit(0);

}

fseek(st,fpos,SEEK_SET);

fread(bitdata,32,1,st);

fclose(st);

}

void writehz(char hz0,char hz1,int x,int y) /*显示汉字*/

{

register int i,j;

unsigned vpos;

char bitdata[32];

openhz(hz0,hz1,bitdata);

for(i=0;i<16;i++)

for(j=0;j<8;j++)

{

if(bitdata[2*i]&bit[j])

fast(x+j,i+y);

if(bitdata[2*i+1]&bit[j])

fast(x+8+j,i+y);

}

}

int printfhz(char *str,int x,int y) /*显示汉字串*/

{

int num,i,xx;

num=strlen(str);

xx=x;

for(i=0;i<num;i+=2)

{

writehz(str,str[i+1],xx,y);

xx+=16;

}

}

BMP.C文件

/*.................................................*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxx 800

#define maxy 600

#define PALETTE_MASK 0x3c6

#define PALETTE_REGISTER_RD 0x3c7

#d

efine PALETTE_REGISTER_WR 0x3c8

#define PALETTE_DATA 0x3c9

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

unsigned char far *video=(char far

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值