卵圆型图案(鸡蛋)的画法

//---------------------------------------------------------------------------------------------------------------
/*/卵圆型图案(鸡蛋)的画法
#include <graphics.h>//包含Easyx模拟TC的BGI绘图库头文件
#include <conio.h>//包含控制台输入输出头文件
#include <math.h>//包含数学运算头文件
#include <iostream.h>//包含输入输出头文件
#define MAXPTS 1000//宏定义点的数量
#define PI 3.1415926//宏定义圆周率
#define c1 RGB(28,57,187)//辅助线颜色
#define c2 RGB(0,255,0)//十字颜色
#define c3 RGB(255,255,255)//主线颜色
//全局变量声明
int W = GetSystemMetrics(SM_CXSCREEN);//获取整个屏幕右下角X坐标
int H = GetSystemMetrics(SM_CYSCREEN);//屏幕Y坐标 
//函数原型声明----------------------------------------------
void draw_arc(double xa,double ya,double ra,double a1,double a2,COLORREF RGB);//根据圆心+半径+始末角度画圆弧
//----------------------------------------------------------
//主函数
void main()
{
	//1.进入到全屏绘图模式------------------------------------------------------
	initgraph(W,H);//初始化绘图区域(宽度+高度)
	HWND hWnd = GetHWnd();//获取窗口句柄
	LONG style = GetWindowLong(hWnd,-16);//获得窗口风格
	style = style & ~WS_CAPTION & ~WS_SIZEBOX; //窗口全屏显示且不可改变大小
	SetWindowLong(hWnd,-16,style);//设置窗口风格
	SetWindowPos(hWnd, NULL,0,0,W,H,SWP_NOZORDER);//改变窗口位置,尺寸和Z序	
	//2.计算大圆的半径和圆心位置------------------------------------------------
	double r1=((W-200)-(W-200)%3)/3;//大圆半径
	double x1=r1+100,y1=H/2.0;//
	double x2=2*r1+100,y2=H/2.0;//
	draw_arc(x1,y1,r1,0,360,c1);//
	draw_arc(x2,y2,r1,0,360,c1);//	
	//3.计算中圆的半径和圆心位置------------------------------------------------
	double r2=r1/2.0;//中圆半径
	double x3=x1+r1/2.0,y3=H/2.0;//
	draw_arc(x3,y3,r2,0,360,c1);//
	//4.计算小圆的半径和圆心位置------------------------------------------------
	double r3=(1-sqrt(2.0)/2.0)*r1;//小圆半径
	double x4=x1+r1/2.0,y4=H/2.0-r1/2.0;//
	draw_arc(x4,y4,r3,0,360,c1);//
	//5.绘制辅助线---------------------------------------------------------------
	double x5=x1+1000*cos(-45*PI/180.0);
	double y5=x1+1000*sin(-45*PI/180.0);
	double x6=x2+1000*cos(-135*PI/180.0);
	double y6=y2+1000*sin(-135*PI/180.0);
	setcolor(c1);
	line(0,H/2,W,H/2);//水平线
	line(x1+r1/2.0,0,x1+r1/2.0,H);//竖直线
	line(x1,y1,x5,y5);//
	line(x2,y2,x6,y6);//
	//6.绘制外轮廓线------------------------------------------------------------
	draw_arc(x3,y3,r2,0,180,c3);//中圆部分
	draw_arc(x1,y1,r1,-45,0,c3);//大圆部分1
	draw_arc(x2,y2,r1,-180,-135,c3);//大圆部分2
	draw_arc(x4,y4,r3,-135,-45,c3);//小圆部分
	//7.图案说明文字------------------------------------------------------------
	outtextxy(30,H-30,"卵圆型图案(鸡蛋)的画法");//在规定的位置放置字符串	
	//--------------------------------------------------------------------------
	getch();//获取字符
	closegraph();//关闭绘图区域
}//结束主函数
//子函数:根据圆心+半径+始末角度画圆弧
void draw_arc(double xa,double ya,double ra,double a1,double a2,COLORREF RGB)
{
	//在圆弧圆心画十字-----------------------------------
	setcolor(c2);//设置颜色
	line(xa-5,ya,xa+5,ya);//水平线
	line(xa,ya-5,xa,ya+5);//竖直线
	//画圆弧---------------------------------------------
	double x1=xa+ra*cos(a1*PI/180.0);//起点数学坐标x
	double y1=ya+ra*sin(a1*PI/180.0);//起点数学坐标y6
	double x2,y2;//新点
	setcolor(RGB);//设置指定颜色
	for(double a=a1;a<=a2;a+=(a2-a1)/(MAXPTS*1.0))
	{
		x2=xa+ra*cos(a*PI/180.0);//新点数学坐标x
		y2=ya+ra*sin(a*PI/180.0);//新点数学坐标y
		line(x1,y1,x2,y2);//画线段
		x1=x2;//存储这个点作为下一个线段的开始
		y1=y2;//
	}//结束for
}//结束子函数*/
//------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值