返回列表 发帖

[原创]c语言图形编程

[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]

返回列表 回复 发帖