代码如下,原理对比上篇画直线方法
void Bresenham_Circle(CDC *pDC, int ox, int oy, int r)
{
float d = 1.25 - r;
int x = 0, y = r, fx = r/1.4;
while (x != fx)
{
if (d < 0)
d += 2 * x + 3;
else
{
d += 2 * (x - y) + 5;
--y;
}
pDC->SetPixel(ox + x, oy + y, RGB(0, 0, 255));
pDC->SetPixel(ox + x, oy - y, RGB(0, 0, 255));
pDC->SetPixel(ox - x, oy + y, RGB(0, 0, 255));
pDC->SetPixel(ox - x, oy - y, RGB(0, 0, 255));
pDC->SetPixel(ox + y, oy - x, RGB(0, 0, 255));
pDC->SetPixel(ox + y, oy + x, RGB(0, 0, 255));
pDC->SetPixel(ox - y, oy + x, RGB(0, 0, 255));
pDC->SetPixel(ox - y, oy - x, RGB(0, 0, 255));
++x;
}
}