二級(jí)C++技巧:MFC編程畫有顏色線條

字號(hào):

要想在MFC中畫出有顏色的線條,首先就要設(shè)置DC的畫筆,我們可以按如下方法來設(shè)置畫筆:
    第一步:在View類中添加一個(gè)COLORREF類型的數(shù)據(jù)成員m_Color(用來保存畫筆顏色值),在構(gòu)造函數(shù)中對(duì)其初始化,
    m_Color(RGB(255,0,0))
    第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的處理函數(shù)OnLButtonDown和OnLButtonUp中添加如下代碼:
    void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    m_StartPoint=point; //用來保存畫線起始點(diǎn)的位置,即鼠標(biāo)左鍵第一次按下時(shí)的位置,類型為CPoint
    CView::OnLButtonDown(nFlags, point);
    }
    void CdrView::OnLButtonUp(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    //第一種方法,用HDC繪圖,使用API函數(shù)設(shè)置畫筆顏色
    /*HDC hdc;
    hdc=::GetDC(m_hWnd);
    ::SelectObject(hdc,CreatePen(PS_SOLID,1,m_Color)); //向設(shè)備上下文(設(shè)備描述表)中插入由CreatePen函數(shù)創(chuàng)建的畫筆
    ::MoveToEx(hdc,m_StartPoint.x,m_StartPoint.y,NULL);
    ::LineTo(hdc,point.x,point.y);
    ::ReleaseDC(m_hWnd,hdc);*/
    //第二種,用CDC類繪圖,使用CPen類構(gòu)造畫筆
    /*CDC aDC;
    CPen pen(PS_SOLID,1,m_Color); //建立一個(gè)畫筆類對(duì)象,構(gòu)造時(shí)設(shè)置畫筆屬性
    aDC.m_hDC=::GetDC(m_hWnd);
    aDC.SelectObject(&pen);
    aDC.MoveTo(m_StartPoint);
    aDC.LineTo(point);
    ::ReleaseDC(m_hWnd,aDC.m_hDC);*/
    //第三種,用CClient類繪圖,使用CPen類構(gòu)造畫筆,跟第二種方法不同的是用CClientDC時(shí)不用手動(dòng)去獲取DC,和釋放DC
    CClientDC aDC(this); //CClientDC的構(gòu)造函數(shù)需要一個(gè)參數(shù),這個(gè)參數(shù)是指向繪圖窗口的指針,我們用this指針就可以了
    CPen pen(PS_SOLID,1,m_Color); ////建立一個(gè)畫筆類對(duì)象,構(gòu)造時(shí)設(shè)置畫筆屬性
    aDC.SelectObject(&pen);
    aDC.MoveTo(m_StartPoint);
    aDC.LineTo(point);
    CView::OnLButtonUp(nFlags, point);
    }
    void CdrView::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    CView::OnMouseMove(nFlags, point);
    }
    運(yùn)行程序,就可以畫出紅色的線條來,如果想畫其它顏色,只需要設(shè)置m_Color的值即可,例如,要設(shè)置成綠色,可以在View類的構(gòu)造函數(shù)處把m_Color(RGB(255,0,0))改寫成m_Color(RGB(0,255,0))。顏色的改變是通過設(shè)置RGB(0,255,0)中的三個(gè)參數(shù)來實(shí)現(xiàn)的。RGB中的三個(gè)參數(shù)分別對(duì)應(yīng)三原色的紅、綠、藍(lán),每一個(gè)參數(shù)的取值范圍都是0~255,通過不同數(shù)值的組合,就可以畫出各種各樣的顏色來了