C语言图形编程代码
C语言图形编程代码
自己以前编写的C语言图形编程代码
自己以前编写的图形编程代码实现DOS下256BMP图片显示,中文注释,中文汉字显示
写的不好,给大家交流与学习,TC3.0与TC2.0下编译通过,实DOS下才能够运行
VGA256.C文件
/*.................................................*/
#include
#include
#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
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
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