编程绘图,程序错在哪(急切)

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:38:15
.15个不同颜色和半径的圆彼此相切与公公点(300,100),最小圆半径为10,其余各圆的半径按级差10递增。试分析圆心的变化规律,并写出绘制该图的程序。
CRect r;GetClientRect(r);
CPen *p1,*p2;
CPoint a(-10,150),b(10,130);

pDC->SetMapMode(7);
pDC->SetWindowOrg(0,0);
pDC->SetViewportOrg(r.right/2,r.bottom/2);
pDC->SetWindowExt(200,100);
pDC->SetViewportExt(200,-100);

int col[15]={RGB(0,0,0),RGB(0,0,255),RGB(0,0,128),RGB(0,255,0),RGB(0,128,0),RGB(0,2855,255),
RGB(0,128,128),RGB(255,0,0),RGB(128,0,0),RGB(255,0,255),RGB(128,0,128),RGB(255,255,0),
RGB(128,128,0),RGB(128,128,128),RGB(192,192,192)};
int i;
for(i=0;i<15;i++)
{

p1=new CPen(0,4,col[i]);
p2=pDC->SelectObject(p1);

pDC->Ellipse(CRect(a,b));
a.Offset(-10,0);
b.Offset(10,-20);

pDC->SelectObject(p2);
delete p1;
}

int i;
for(i=0;i<15;i++)
{

p1=new CPen(0,4,col[i]);
p2=pDC->SelectObject(p1);

pDC->Ellipse(CRect(a,b));
a.Offset(-10,0);
b.Offset(10,-20);

pDC->SelectObject(p2);
delete p1;
}
改成
int i, offsetX = -10, offsetY = 0, offsetX2 = 10, offsetY2 = -20;
for(i=0;i<15;i++)
{

p1=new CPen(0,4,col[i]);
p2=pDC->SelectObject(p1);

pDC->Ellipse(CRect(a,b));
a.Offset(offsetX ,offsetY );
b.Offset(offsetX2 ,offsetY2 );
offsetX -= 5;
offsetY += 5;
offsetX2 += 5;
offsetY2 -= 5;

pDC->SelectObject(p2);
delete p1;
}
试下