计算机图形学-画太极

① 画下半大圆(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));
}


  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值