先看绘圆的代码:
<span style="font-size:18px;"> //Draw Circle use brush
CBrush brush1(RGB(255,0,0)); //red
old = pDC->SelectObject(&brush1);
CRect cRect;
cRect.SetRect(0,0,0,0); //圆心是(0,0)
cRect.InflateRect(50,50); //半径是50
pDC->Ellipse(cRect);
pDC->SelectObject(old);</span>
第二行:因为要绘实心圆,所以画图工具选择CBrush,首先设置一个Brush,如第二行所示,画刷的颜色在其后面的COLORREF类参数RGB()中设定;
第三行:让之前定好的DC(pDC)选择新的画刷,并将就画刷指针给之前定义的CBrush指针old;
第四行:定义一个CRect类的具体对象cRect;
第五行:用CRect类的InflateRect函数来设置之前定义矩形的大小,在这个程序中就是设置圆心的位置,前两个参数是矩形左上角坐标,后两个参数是矩形右下角坐标,当前两个参数的值和后两个参数值一样时,该矩形大小为零,如cRect.SetRect(20,50,20,50),圆心就定在了坐标为20,50这个点;
第六行:用CRect类的InflateRect函数来设置之前定义矩形的高度和宽度,在这个程序中就是设置圆的半径;
第七行:用CDC类中画椭圆的函数Ellipse来画圆,只要将之前定义的矩形当参数付给Ellipse函数即可;
第八行:最后还原原来的画刷;
总结:画圆用CDC类的画椭圆函数即可,其中先通过CRECT类定义一个正方形,正方形的起始点和终止点设成一样即定义圆心,再将正方形拉宽拉高,拉宽拉高的值就是圆半径,最后将这个正方形当参数付给画椭圆的函数即可。
如要画空心圆,只要将画图工具选成画笔就好,空心圆的空心程度,可以通过设置画笔的线宽来实现。