代码如下,原理对比上篇画直线方法
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; } }
原文地址:http://blog.csdn.net/xianyun2009/article/details/39011559