新浪博客

[转载]【C++图形学】把一个半径为R的圆40等分,以每个等分点为圆心,以r为半径

2013-03-28 09:47阅读:

void CMy2013_3_21_02View::OnDraw(CDC* pDC)
{
CMy2013_3_21_02Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int R1=120,r1=80;
int R2=80,r2=80;
int R3=80,r3=120;//定义大小圆的半径
double x,y;
CRect Rect;
GetClientRect(&Rect);
int MaxX=Rect.Width();
int MaxY=Rect.Height();//计算屏幕客户区高度和宽度
pDC->TextOut(0,0,'大圆半径 > 小圆半径');
pDC->TextOut(2*MaxX/5,0,'大圆半径 = 小圆半径');
pDC->TextOut(2*MaxX/3,0,'大圆半径 < 小圆半径');
CBrush NewBrush,*pOldBrush;
pOldBrush=(CBrush*)pDC->SelectStockObject(NULL_BRUSH);//使用透明画刷绘制空心圆
for(double i=0;i<=2*PI;i+=PI/20)
{
x=R1*cos(i)+MaxX/5;
y=R1*sin(i)+MaxY/2;
pDC->Ellipse(ROUND(x-r1),ROUND(y-r1),ROUND(x+r1),ROUND(y+r1));
}//用椭圆函数绘制圆
for(double j=0;j<=2*PI;j+=PI/20)
{
x=R2*cos(j)+MaxX/2;
y=R2*sin(j)+MaxY/2;
pDC->Ellipse(ROUND(x-r2),ROUND(y-r2),ROUND(x+r2),ROUND(y+r2));
}//用椭圆函数绘制圆
for(double k=0;k<=2*PI;k+=PI/20)
{
x=R3*cos(k)+4*MaxX/5;
y=R3*sin(k)+MaxY/2;
pDC->Ellipse(ROUND(x-r3),ROUND(y-r3),ROUND(x+r3),ROUND(y+r3));
}//用椭圆函数绘制圆
}
[转载]【C++图形学】把一个半径为R的圆40等分,以每个等分点为圆心,以r为半径

我的更多文章

下载客户端阅读体验更佳

APP专享