zoukankan      html  css  js  c++  java
  • 多边形绘制

    代码部分

    CRect rect;
    GetClientRect(rect);
    pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetWindowExt(rect.Width(), rect.Height());
    pDC->SetViewportExt(rect.Width(), -rect.Height());
    pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

    CPen PenBlue(PS_SOLID, 5, RGB(0, 0, 255));
    CPen *pOldPen = pDC->SelectObject(&PenBlue);

    CBrush brushRed(RGB(255, 0, 0));
    CBrush *pOldBrush = pDC->SelectObject(&brushRed);

    pDC->SetPolyFillMode(ALTERNATE);

    int r = 200;
    CPoint p[5];
    double Alpha = 2 * PI / 5;
    for (int i = 0; i < 5; i++)
    {
    p[i].x = Round(r * cos(i * Alpha));
    p[i].y = Round(r * sin(i * Alpha));
    }

    // double Beta=2*PI/5;//定义每条边的转角β
    // double Alpha=PI/10;//定义起始角α
    // for(int i=0;i<5;i++)
    // {
    // p[i].x=Round(r*cos(i*Beta+Alpha));//计算正五边形顶点坐标
    // p[i].y=Round(r*sin(i*Beta+Alpha));
    // }

    CPoint v[5];
    v[0] = p[0]; v[1] = p[2]; v[2] = p[4]; v[3] = p[1]; v[4] = p[3];
    pDC->Polygon(v, 5);
    pDC->SelectObject(pOldPen);
    pDC->SelectObject(pOldBrush);

    代码中注释的那部分和其上面的功能一样,只是它绘的五角星是正绘的。

    “Polygon(v, 5);”这个函数是用来绘多边形的,一笔绘,这个很重要,不然“v[0] = p[0]; v[1] = p[2]; v[2] = p[4]; v[3] = p[1]; v[4] = p[3];”可能看不懂。

    “SetPolyFillMode(ALTERNATE);”两种填充方式。ALTERNATE是扫描线,填奇偶相邻的线段之间的封闭区域;WINDING是由封闭区域向外引虚构的射线,如果穿过的线段就填充,很明显,从封闭区向外引线就一定会穿过线段。

  • 相关阅读:
    ssh免密码登录与常见问题
    在eclipse中生成实体类
    在cmd中设置字体
    java命名
    c/s架构
    sql身份证号查人数
    bootstraptable表格基本
    手机登录验证
    form表单验证提示语句
    html让背景透明
  • 原文地址:https://www.cnblogs.com/qbin/p/4973165.html
Copyright © 2011-2022 走看看