① 画下半大圆(x, y), 半径为R,起点为(x - R, y),终点为(x + R, y)
② 将另外半圆填充成黑色,圆心(x, y), 半径为R,起点为(x + R, y),终点为(x - R, y)
③ 画一个黑色的小圆,构成太极的向下突出小半圆,圆心(x+r, y),半径r
④ 画一个白色的小圆,构成太极的向上突出小半圆,圆心(x-r, y),半径r
⑤ 画两个小圆,圆心分别为(x+r, y),(x-r,y),半径这里取R/5.5
⑥ 程序实现
void drawTaiji(CDC* pDC, intR, int x, int y)
{
CBrush blackBrush(RGB(0, 0, 0));
CBrush whiteBrush(RGB(255, 255, 255));
CPen whitePen(PS_SOLID, 1, RGB(255, 255, 255));
CPen blackPen(PS_SOLID, 1, RGB(0, 0, 0));
CRect rect(x - R, y - R, x + R, y + R); //用于画图的矩形
pDC->Pie(rect, CPoint(x - R, y), CPoint(x + R, y)); //画下大半圆
pDC->SelectObject(blackBrush);
pDC->Pie(rect, CPoint(x + R, y), CPoint(x - R, y)); //将另外半圆填充成黑色
int r = R / 2;
pDC->Ellipse(x , y - r, x + R, y + r); //画一个黑色的小圆,构成太极的向下突出小半圆
pDC->SelectObject(whitePen);
pDC->SelectObject(whiteBrush);
pDC->Pie(x - R, y - r, x, y + r, x, y, x - R, y); //画一个白色的小圆,构成太极的向上突出小半圆
pDC->Ellipse(x + r - int(R/5.5), y - int(R / 5.5), x + r +int(R / 5.5), y + int(R / 5.5));
pDC->SelectObject(blackPen);
pDC->Arc(x - R, y - R, x + R, y + R, x, y - R, x, y + R);
pDC->SelectObject(blackBrush);
pDC->SelectObject(blackPen);
pDC->Ellipse(x - r - int(R / 5.5), y - int(R / 5.5), x - r +int(R / 5.5), y + int(R / 5.5));
}