//---------------------------------------------------------------------------------------------------------------
/*/卵圆型图案(鸡蛋)的画法
#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
}//结束子函数*/
//------------------------------------------------------------------------------------------------------------------
卵圆型图案(鸡蛋)的画法
于 2023-12-10 11:13:48 首次发布