从一个菜鸟的角度看 关于graphics.h的使用 这个不是VS-easyx版本的
这个是dev c++ 包含BGI的版本(我也不太清楚这是什么东西,我个人觉得没有easyx好用)
上课看敲敲代码,下课和同学讨论这些没见过的函数是干嘛的以及作用
我们以画一个小车为例,仅供参考,如果有大佬知道这些函数更加具体的作用 期待大佬讲解
先打上框架 模板啥的 后面慢慢画
一、初始化画板
1.先把大概框架打上 具体啥作用搜索其他大佬的讲解
代码如下(示例):
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int main()
{
int gd = DETECT,gm;
initgraph(&gd,&gm,".//TC//BGI");
//背景色设为白色
setbkcolor(RGB(128,128,128));
//setbkcolor();要在cleardevice();前面 可以理解为利用背景颜色来清理画布
//在这里setbkcolor可以使用RGB(,,);来调自己喜欢的颜色
//但是在下面提到的
//setcolor();
//setfillstyle(SOLID_FILL,);
//floodfill();中不能使用RGB调色,会报错
cleardevice();
//这里的内容下面会写到
.
.
.
.
.
///
}
getch();//这个函数包含在<conio.h>,作用与getchar();类似
//在dev中加不加getch();其实没有影响
//看在老师打了 我也打了
closegraph();
return 0;
}
2.画桥和小车
代码如下(示例):
###
//假如给一个矩形上色 必须要有下面4个函数
///再上色前setcolor();此处颜色要与下面floodfill();颜色一致
// 和setfillstyle();不能少 这两个的顺序没有要求 但是setcolor的颜色要与floodfill(,,border);的颜色要一致
//这里的border在MSDN中好像是size的意思 可是实际使用中感觉像是颜色的意思
// 然后第二步开始画你想画的图形
// rectangle();
//第三步开始上色
// floodfill(x轴上的点,y轴上的点,颜色(这里的颜色要与上面setcolor的颜色要一致不然会画的一片稀碎));这里的点要在你上色那个图案的里面
//为了正常上色 你不要看我写的很罗嗦 一样的意思重复几遍 是为了让你记住
//
//小车
setcolor(BLACK);//这里的颜色必须与下面floodfill(,,border);颜色一致
//不然颜色会出错
setfillstyle(SOLID_FILL,CYAN);//这里是指里面填充的颜色
//这里的i后面的for会有
rectangle(100+i,270,180+i,350);
rectangle(180+i,320,220+i,350);
circle(120+i,365,15);
circle(170+i,365,15);
floodfill(101+i,271,0);
floodfill(181+i,321,0);
floodfill(121+i,366,0);
floodfill(171+i,366,0);
//桥 以及上色
setcolor(BLACK);
setfillstyle(SOLID_FILL,GREEN);
rectangle(0,80,80,380);
rectangle(560,80,640,380);
rectangle(0,380,640,400);
rectangle(300,20,320,380);
rectangle(100,400,120,480);
rectangle(300,400,320,480);
rectangle(500,400,520,480);
line(80,80,300,230);
line(320,230,560,80);
floodfill(1,81,0);
floodfill(561,81,0);
floodfill(1,381,0);
floodfill(301,21,0);
floodfill(101,401,0);
floodfill(301,401,0);
floodfill(501,401,0);
3.套个for循环 让小车动起来 完整代码(但是有缺陷)咋改缺陷自己想 不想打了
感觉画图的话 真的是没easyx的好用
缺陷就是 他那个点 在车过去的时候 会导致部分区域无法正常上色
套个for
代码如下(示例):
###
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int main()
{
int gd = DETECT,gm;
initgraph(&gd,&gm,".//TC//BGI");
//背景色设为白色
setbkcolor(RGB(128,128,128));
//为了让车动 套入for循环
int i = 0;
for(i=0;i<=500;i++)
{
delay(5);
cleardevice();
//小车
setcolor(BLACK);
setfillstyle(SOLID_FILL,CYAN);
rectangle(100+i,270,180+i,350);
rectangle(180+i,320,220+i,350);
circle(120+i,365,15);
circle(170+i,365,15);
floodfill(101+i,271,0);
floodfill(181+i,321,0);
floodfill(121+i,366,0);
floodfill(171+i,366,0);
//桥 以及上色
setcolor(BLACK);
setfillstyle(SOLID_FILL,GREEN);
rectangle(0,80,80,380);
rectangle(560,80,640,380);
rectangle(0,380,640,400);
rectangle(300,20,320,380);
rectangle(100,400,120,480);
rectangle(300,400,320,480);
rectangle(500,400,520,480);
line(80,80,300,230);
line(320,230,560,80);
floodfill(1,81,0);
floodfill(561,81,0);
floodfill(1,381,0);
floodfill(301,21,0);
floodfill(101,401,0);
floodfill(301,401,0);
floodfill(501,401,0);
}
getch();
closegraph();
return 0;
}
个人总结完毕
欢迎讨论 指错