2011-04-08 70 views
0

hi 在C++ Visual Studio中有一個函數CDC :: ExtFloodFill(int x,int y,COLORREF crColor,UINT nFillType);CDC對象顏色的幫助

我的問題是,我們假設到位

INT X,INT Y,COLORREF crColor,UINT nFillType的寫

一樣,如果我有我想要的顏色如何做到這一點的目的

enter code here 
       #include "afxwin.h" 

    class fr : public CFrameWnd 
      { 

       public: 

CPoint st; 
CPoint en; 

fr() 
{ 

    Create(0,"First Frame"); 
} 


////////////////////// 
void OnLButtonDown(UINT fl,CPoint p) 

{ 
    st.x=p.x; 
    st.y=p.y; 
} 

////////////////////// 
void OnLButtonUp(UINT fl,CPoint r) 
{ 

    en.x=r.x; 
    en.y=r.y; 




    CClientDC d(this); 

    d.Ellipse(st.x,st.y,en.x,en.y); 

     } 
     void OnRButtonDown(UINT fl,CPoint q) 
     { 
     CClientDC e(this); 


    e.ExtFloodFill(............); 
     } 
    DECLARE_MESSAGE_MAP() 
}; 
    BEGIN_MESSAGE_MAP(fr,CFrameWnd) 
ON_WM_LBUTTONDOWN() 
    ON_WM_RBUTTONDOWN() 
    END_MESSAGE_MAP() 

    class app : public CWinApp 
{ 


    public: 
int InitInstance() 
{ 

    fr*sal; 
    sal=new fr; 
    m_pMainWnd=sal; 
    sal->ShowWindow(1); 

    return true; 
} 

    }; 

    app a; 
+0

沒有任何一個幫助我 – samii 2011-04-08 17:14:56

回答

0

對於你的榜樣,ExtFloodFill(或任何其他版本FloodFill的)是不是真正的正確選擇。相反,您通常要將當前筆刷設置爲所需的顏色/圖案,然後繪製您的對象(並且會自動填充當前筆刷)。比方說,例如,你想畫一個紅色橢圓:

CMyView::OnDraw(CDC *pDC) { 
    CBrush red_brush; 

    red_brush.CreateSolidBrush(RGB(255, 0, 0)); 

    pDC->SelectObject(red_brush); 
    pDC->Ellipse(0, 0, 100, 50); 
} 

編輯:好吧,如果你真的堅持它必須是一個洪水填充,和你這樣做是響應點擊一個按鈕,你可能會做這樣的事情:

void CYourView::OnRButtonDown(UINT nFlags, CPoint point) 
{ 
    CClientDC dc(this); 
    CBrush blue_brush; 
    blue_brush.CreateSolidBrush(RGB(0, 0, 255)); 
    dc.SelectObject(blue_brush); 
    dc.ExtFloodFill(point.x, point.y, RGB(0, 0,0), FLOODFILLBORDER); 
    CView::OnRButtonDown(nFlags, point); 
} 
+0

thnkss幫助,但我瓦納顏色對象時按下鼠標右鍵 – samii 2011-04-08 19:19:45

+0

見更新的答案。 – 2011-04-08 20:27:11

+0

非常感謝你的幫助只是愛你非常感謝 – samii 2011-04-09 13:45:05