[watermark]这是一个简单的c语言图形程序,可以简单的说说c语言下的图形编程。
在代码后面加了注释,前提是要有c的基础!
该程序在tc 2.0下编译通过,需要说明的是程序中的 这个代码:
initgraph(&graphdriver,&graphmode,"C:\\turboc2");
这是tc下将原先的25*80的文本模式转换到图形模式的函数,
其中graphdriver为图形驱动器变量 ,我们把他设置为DETECT,这样程序会自动检测图形驱动器
而graphmode为图形模式,因为前面的graphdriver=DETECT已经设为自动检测,所以我们不需要改变
第3个参数是一个文件路径,他是图形驱动文件的地址,一般在你所安装的tc目录下面,
这里我的tc的完整路径是c:\turboc2所以路径为c:\\turboc2,如果你的tc所在的目录在d:\c\turboc2则应该为d:\\c\\turboc,注意为双斜杆!
好了,关键部分说完了,下面来看看代码吧!
#include"stdio.h"
#include"stdlib.h"
#include"graphics.h"/*图形编程必须要包含的头文件*/
void drawmat(char *mat,int matsize,int x,int y,int color)/**/
{int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j>k))
putpixel(x+i*8+k,y+j,color);/*在屏幕上画一个点的函数,参数分别为x坐标和y坐标和颜色,这里的颜色是256色的,范围为0-255中的一个植。*/
}
main()
{
char cai[]={ /* "通过画点在屏幕上“写”一个蔡字" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x08,0x00,0x00,0x18,0x08,0x10,
0x00,0x18,0x08,0x10,0x1F,0xFF,0xFF,0xF8,
0x00,0x18,0x08,0x00,0x00,0x98,0x08,0x00,
0x00,0xD8,0x00,0x00,0x01,0xA0,0x40,0x00,
0x01,0x83,0x40,0x60,0x01,0x7F,0xFF,0xF0,
0x03,0x86,0x20,0xC0,0x06,0x46,0x10,0x80,
0x04,0x64,0x11,0x00,0x0C,0x6C,0x09,0x00,
0x13,0x18,0x0E,0x00,0x23,0x18,0x16,0x00,
0x01,0x3F,0xFB,0x80,0x00,0x60,0x05,0xE0,
0x00,0xC0,0x02,0x7E,0x01,0x00,0x07,0x38,
0x06,0xFF,0xF8,0x08,0x08,0x00,0x80,0x00,
0x10,0x30,0x88,0x00,0x00,0x78,0x86,0x00,
0x00,0xE0,0x81,0x80,0x01,0x80,0x80,0xE0,
0x03,0x18,0x80,0x60,0x04,0x07,0x80,0x30,
0x08,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
};
char jian[]={ /* "通过画点在屏幕上“写”一个剑字" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x00,0x18,0x00,0x38,0x00,0x1C,
0x00,0x60,0x00,0x18,0x00,0x78,0x00,0x18,
0x00,0xC7,0x04,0x18,0x00,0x83,0x83,0x18,
0x01,0x80,0xE2,0x18,0x03,0x00,0xE2,0x08,
0x06,0x00,0x62,0x08,0x04,0x01,0x22,0x08,
0x08,0x03,0x82,0x08,0x11,0xFC,0x02,0x08,
0x20,0x00,0x02,0x08,0x00,0x40,0x82,0x08,
0x08,0x40,0xE2,0x08,0x04,0x20,0xC2,0x08,
0x04,0x30,0x82,0x08,0x06,0x31,0x82,0x08,
0x06,0x31,0x02,0x08,0x03,0x33,0x02,0x08,
0x03,0x12,0x02,0x08,0x02,0x04,0x04,0x08,
0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x08,
0x00,0x0F,0xF0,0x08,0x07,0xF8,0x00,0x18,
0x3F,0x80,0x01,0xF8,0x18,0x00,0x00,0x78,
0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
};
int graphdriver,graphmode,i=0,pcx=1,pcy=1,tempx,tempy,max_x,max_y;
char getkey=';e';; /*initial getkey */
printf(" up : w\n down : s\n left : a \n right: d\n exit : q\n\n");
printf(" press anykey to draw ! ");
getch();
graphdriver=DETECT;/*设置为自动检测图形驱动*/
initgraph(&graphdriver,&graphmode,"C:\\turboc2");/*图形模式初始化,然后我们才可以画图*/
cleardevice();
tempx=pcx; /*initial x piexl */
tempy=pcy; /*initial y piexl */
max_x=getmaxx();/*获取显示最大的宽度,即一行可以显示的象素数*/
max_y=getmaxy();();/*获取显示最大的高度,即一列可以显示的象素数*/
setcolor(10);/*设置前景颜色*/
while(getkey!=';q';)/*进如循环*/
{
if(getkey==';s';) /* down */
{
if(tempy+20>=max_y)
tempy=tempy;
else tempy+=20;
}
if(getkey==';w';) /* up */
{
if(tempy-20<=0)
tempy=tempy;
else tempy-=20;
}
if(getkey==';d';) /* right */
{
if(tempx+20>=max_x)
tempx=tempx;
else tempx+=20;
}
if(getkey==';a';)
{
if(tempx-20<=0)
tempx=tempx;
else tempx-=20;
}
line(pcx,pcy,tempx,tempy);/*通过接受用户的输入来在屏幕上画图,如w则向上画一条直线,4个参数分别为起始坐标和终止坐标*/
i=i%8;
drawmat(cai,32,250,200,i);
drawmat(jian,32,350,200,i) ;/*在屏幕上画出"蔡剑"2字*/
i++;
pcx=tempx;
pcy=tempy;
getkey=getch();/*继续接受下一个输入*/
delay(5000);/*延时函数,跟具体的机器的配置不同而延时时间不同,可以自己调节*/
}/*end while*/
}/*end main()*/[/watermark] |