【问题标题】:How to fill rectangle (c++, mfc)如何填充矩形(c++,mfc)
【发布时间】:2016-09-10 21:49:36
【问题描述】:

我需要填充“矩形”部分(对角填充)(就像这张图片)。 如何在 mfc 上做到这一点?对不起我的英语不好!

void CKonokhovView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_Dragging){
    m_Dragging = 0;
    ::ReleaseCapture();
    ::ClipCursor(NULL);
    CKonokhovDoc* pDoc = GetDocument();
    CClientDC ClientDC(this);
    CPen pen;
    pen.CreatePen(PS_SOLID, 1, pDoc->docColor);
    ClientDC.SelectObject(&pen);
    ClientDC.SetROP2(R2_NOT);
    ClientDC.Rectangle(m_PointOrigin.x, m_PointOrigin.y, m_PointOld.x,      m_PointOld.y);
    ClientDC.SetROP2(R2_COPYPEN);
    CBrush* oldBrush = ClientDC.SelectObject(&nullBrush);
    ClientDC.Rectangle(m_PointOrigin.x, m_PointOrigin.y, point.x, point.y);

    pDoc->AddLine(m_PointOrigin.x, m_PointOrigin.y, point.x, point.y);
    ClientDC.SelectObject(&oldBrush);


}

【问题讨论】:

  • 你可以使用区域对象

标签: c++ visual-studio mfc 2d draw


【解决方案1】:

您可以使用CDC::Polygon,它是Polygon API 的包装器

例子:

CRect rc(0, 0, 100, 100);
CPoint points[3];
points[0] = CPoint(rc.left, rc.top);
points[1] = CPoint(rc.right, rc.top);
points[2] = CPoint(rc.left, rc.bottom);

ClientDC.Polygon(points, 3);

【讨论】: