2016-09-10 8 views
0

"Rectangle"(diagonallの塗りつぶし)の部分を塗りつぶす必要がありますenter image description here(この画像のように)。 MFCでの操作方法私の悪い英語のために申し訳ありません!長方形(C++、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); 


} 
+1

を –

答えて

3

あなたはPolygon API

例のラッパーですCDC::Polygon、使用することができます:あなたはリージョンオブジェクトを使用することができ

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); 
関連する問題