void Draw8Pt(CDC *pDC,int nOriginX,int nOriginY,int x,int y) { pDC->SetPixel(nOriginX+x,nOriginY+y,RGB(0,0,0)); pDC->SetPixel(nOriginX+y,nOriginY+x,RGB(0,0,0)); pDC->SetPixel(nOriginX+y,nOriginY-x,RGB(0,0,0)); pDC->SetPixel(nOriginX+x,nOriginY-y,RGB(0,0,0)); pDC->SetPixel(nOriginX-x,nOriginY-y,RGB(0,0,0)); pDC->SetPixel(nOriginX-y,nOriginY-x,RGB(0,0,0)); pDC->SetPixel(nOriginX-y,nOriginY+x,RGB(0,0,0)); pDC->SetPixel(nOriginX-x,nOriginY+y,RGB(0,0,0)); } void Bresenham_Circle(CDC *pDC,int nOriginX,int nOriginY,int r) { int d=3-2*r; int x=0; int y=r; int yi=0; while(x<=y) { //实心空心开关Draw8Pt(pDC,nOriginX,nOriginY,x,y); for(yi=x;yi<=y;++yi) Draw8Pt(pDC,nOriginX,nOriginY,x,yi); if(d<0) d+=4*x+6; else { d+=4*(x-y)+10; --y; } ++x; } }