以一个小车案例讲解graphics使用

从一个菜鸟的角度看 关于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;
}

个人总结完毕
欢迎讨论 指错

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值