用CDC画椭圆实现,圆是特殊的椭圆而已。
void DrawCircle(CDC* pDC,CRect rect)
{
int rx,ry;
//找出大一些的直径
if (rect.right < rect.left)
{
rx= rect.left;
rect.left = rect.right;
rect.right = rx;
}
if (rect.bottom < rect.top)
{
y= rect.top;
rect.top = rect.bottom;
rect.bottom = y;
}
//算出两直径的差
x= rect.right - rect.left;
y= rect.bottom - rect.top;
//根据直径差值,移动椭圆的边界,圆的半径为min(x,y)
if (x> y)
{
rect.left += (x-y) / 2;
rect.right = rect.left + y;
}
else
{
rect.top += (y-x) / 2;
rect.bottom = rect.top + x;
}
pDC->Ellipse(rect);
}
还有个简单点的方法,这样更实用。就是算出圆的半径radius,矩形坐上角坐标(x,y),则画圆的语句为:
pDC->(x-radius,y-radius,x+radius,y+radius)