画出三角形,然后ExtFloodFill 

解决方案 »

  1.   

    那你觉得我下面的有错吗?ExtFloodFill怎么确定三角形的边界呢?
    CPoint trigle[3];
            float sinpt=(ptKnobCenter.x-m_ptCenter.x)/(float)(m_nRadius+nKnobRadius);
            float cospt=(ptKnobCenter.y-m_ptCenter.y)/(float)(m_nRadius+nKnobRadius);
            CRect pointer;
            
            trigle[0].x=m_ptCenter.x-20*cospt;//A
            trigle[0].y=m_ptCenter.y-20*sinpt;
            trigle[1].x=m_ptCenter.x-20*cospt;//B
            trigle[1].y=m_ptCenter.y-20*sinpt;
            trigle[2].x=ptKnobCenter.x;//C
            trigle[2].y=ptKnobCenter.y;
    //////////////////
    trigle提供三角形的三个顶点
    ////////////////
            CRgn rgnPointer;        rgnPointer.CreatePolygonRgn(trigle,3,WINDING);
        
            CBrush pointKnob(::GetSysColor(COLOR_3DSHADOW));
        //    
            pDC->FillRgn(&rgnPointer, &pointKnob);
            pointKnob.DeleteObject();   
      

  2.   

    用三点构成多边形数组,然后以它为参数调用CDC的画多边形函数画多边形,用CDC的填充多边形函数填充。
      

  3.   

    CPoint p1(1,2),p2(2,3),p3(3,4);beginpath()好想是高一条路径。
    MoveTo(p1);
    lineTo(p2;
    lineTo(p3);
    endpath() ;
    然后把path变为坐标,在进行BRUSH的绘制。
    你查一下PATH的相关资料。
      

  4.   

    POINT point[3];
    point[0].x=2;
    point[0].y=7;
    point[1].x=4;
    point[1].y=34;
    point[2].x=48;
    point[2].y=67;//确定三角形的重心
    POINT p1,p2;
    p1.x= (point[1].x+point[2].x)/2;
    p1.y= (point[1].y+point[2].y)/2;
    p2.x= (point[0].x+p1.x)/2;
    p2.y= (point[0].y+p1.y)/2;
    pDC->MoveTo(point[0]);
    pDC->LineTo(point[1]);
    pDC->LineTo(point[2]);
    pDC->LineTo(point[0]);
    CBrush pointKnob(::GetSysColor(COLOR_3DSHADOW));
    pDC->SelectObject(&pointKnob);
    ExtFloodFill(pDC->m_hDC,p2.x,p2.y,RGB(0,0,0),FLOODFILLBORDER);
      

  5.   

    ExtFloodFill的第四个参数是所要填充的边界颜色