參考:
http://blog.csdn.net/zang141588761/article/details/50536788
[轉載]MFC中畫直線和曲線
一、畫直線
要想在MFC中畫出有顏色的線條,首先就要設置DC的畫筆,我們可以按如下方法來設置畫筆:
第一步:在View類中添加一個COLORREF類型的數據成員m_Color(用來保存畫筆顏色值),在構造函數中對其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的處理函數OnLButtonDown和OnLButtonUp中添加如下代碼:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_StartPoint=point; //用來保存畫線起始點的位置,即鼠標左鍵第一次按下時的位置,類型為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函數設置畫筆顏色
//第二種,用CDC類繪圖,使用CPen類構造畫筆
//第三種,用CClient類繪圖,使用CPen類構造畫筆,跟第二種方法不同的是用CClientDC時不用手動去獲取DC,和釋放DC
CClientDC aDC(this); //CClientDC的構造函數需要一個參數,這個參數是指向繪圖窗口的指針,我們用this指針就可以了
CPen pen(PS_SOLID,1,m_Color); 建立一個畫筆類對象,構造時設置畫筆屬性
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);
}
運行程序,就可以畫出紅色的線條來,如果想畫其它顏色,只需要設置m_Color的值即可,例如,要設置成綠色,可以在View類的構造函數處把 m_Color(RGB(255,0,0))改寫成m_Color(RGB(0,255,0))。顏色的改變是通過設置RGB(0,255,0)中的三個 參數來實現的。RGB中的三個參數分別對應三原色的紅、綠、藍,每一個參數的取值范圍都是0~255,通過不同數值的組合,就可以畫出各種各樣的顏色來 了。
二、畫曲線
? ? ? ?OK,運行程序,曲線也可以畫了。
參考:http://www.qnr.cn/pc/erji/cpp/ziliao/200812/103981.html
http://school.cfan.com.cn/pro/c/2008-12-08/1228727410d202128.shtml
要想在MFC中畫出有顏色的線條,首先就要設置DC的畫筆,我們可以按如下方法來設置畫筆:
第一步:在View類中添加一個COLORREF類型的數據成員m_Color(用來保存畫筆顏色值),在構造函數中對其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的處理函數OnLButtonDown和OnLButtonUp中添加如下代碼:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_StartPoint=point; //用來保存畫線起始點的位置,即鼠標左鍵第一次按下時的位置,類型為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函數設置畫筆顏色
//第二種,用CDC類繪圖,使用CPen類構造畫筆
//第三種,用CClient類繪圖,使用CPen類構造畫筆,跟第二種方法不同的是用CClientDC時不用手動去獲取DC,和釋放DC
CClientDC aDC(this); //CClientDC的構造函數需要一個參數,這個參數是指向繪圖窗口的指針,我們用this指針就可以了
CPen pen(PS_SOLID,1,m_Color); 建立一個畫筆類對象,構造時設置畫筆屬性
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);
}
運行程序,就可以畫出紅色的線條來,如果想畫其它顏色,只需要設置m_Color的值即可,例如,要設置成綠色,可以在View類的構造函數處把 m_Color(RGB(255,0,0))改寫成m_Color(RGB(0,255,0))。顏色的改變是通過設置RGB(0,255,0)中的三個 參數來實現的。RGB中的三個參數分別對應三原色的紅、綠、藍,每一個參數的取值范圍都是0~255,通過不同數值的組合,就可以畫出各種各樣的顏色來 了。
二、畫曲線
?
?
? { // TODO: Add your message handler code here and/or call default if(nFlags==MK_LBUTTON) //判斷鼠標左鍵是否按下,如果按下,則移動時畫線 { CClientDC aDC(this); aDC.MoveTo(m_StartPoint); aDC.LineTo(point); m_StartPoint=point; //將畫線的起點移動到鼠標移動后的點 } CView::OnMouseMove(nFlags, point); } |
參考:http://www.qnr.cn/pc/erji/cpp/ziliao/200812/103981.html
http://school.cfan.com.cn/pro/c/2008-12-08/1228727410d202128.shtml
要想在MFC中畫出有顏色的線條,首先就要設置DC的畫筆,我們可以按如下方法來設置畫筆:
第一步:在View類中添加一個COLORREF類型的數據成員m_Color(用來保存畫筆顏色值),在構造函數中對其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的處理函數OnLButtonDown和OnLButtonUp中添加如下代碼:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_StartPoint=point; //用來保存畫線起始點的位置,即鼠標左鍵第一次按下時的位置,類型為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函數設置畫筆顏色
/*HDC hdc;
hdc=::GetDC(m_hWnd);
::SelectObject(hdc,CreatePen(PS_SOLID,1,m_Color)); //向設備上下文(設備描述表)中插入由CreatePen函數創建的畫筆
::MoveToEx(hdc,m_StartPoint.x,m_StartPoint.y,NULL);
::LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);*/
//第二種,用CDC類繪圖,使用CPen類構造畫筆
/*CDC aDC;
CPen pen(PS_SOLID,1,m_Color); //建立一個畫筆類對象,構造時設置畫筆屬性
aDC.m_hDC=::GetDC(m_hWnd);
aDC.SelectObject(&pen);
aDC.MoveTo(m_StartPoint);
aDC.LineTo(point);
::ReleaseDC(m_hWnd,aDC.m_hDC);*/
//第三種,用CClient類繪圖,使用CPen類構造畫筆,跟第二種方法不同的是用CClientDC時不用手動去獲取DC,和釋放DC
CClientDC aDC(this); //CClientDC的構造函數需要一個參數,這個參數是指向繪圖窗口的指針,我們用this指針就可以了
CPen pen(PS_SOLID,1,m_Color); 建立一個畫筆類對象,構造時設置畫筆屬性
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);
}
運行程序,就可以畫出紅色的線條來,如果想畫其它顏色,只需要設置m_Color的值即可,例如,要設置成綠色,可以在View類的構造函數處把m_Color(RGB(255,0,0))改寫成m_Color(RGB(0,255,0))。顏色的改變是通過設置RGB(0,255,0)中的三個參數來實現的。RGB中的三個參數分別對應三原色的紅、綠、藍,每一個參數的取值范圍都是0~255,通過不同數值的組合,就可以畫出各種各樣的顏色來了。
第一步:在View類中添加一個COLORREF類型的數據成員m_Color(用來保存畫筆顏色值),在構造函數中對其初始化,
m_Color(RGB(255,0,0))
第二步:在WM_LBUTTONDOWN和WM_LBUTTONUP消息的處理函數OnLButtonDown和OnLButtonUp中添加如下代碼:
void CdrView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_StartPoint=point; //用來保存畫線起始點的位置,即鼠標左鍵第一次按下時的位置,類型為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函數設置畫筆顏色
/*HDC hdc;
hdc=::GetDC(m_hWnd);
::SelectObject(hdc,CreatePen(PS_SOLID,1,m_Color)); //向設備上下文(設備描述表)中插入由CreatePen函數創建的畫筆
::MoveToEx(hdc,m_StartPoint.x,m_StartPoint.y,NULL);
::LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);*/
//第二種,用CDC類繪圖,使用CPen類構造畫筆
/*CDC aDC;
CPen pen(PS_SOLID,1,m_Color); //建立一個畫筆類對象,構造時設置畫筆屬性
aDC.m_hDC=::GetDC(m_hWnd);
aDC.SelectObject(&pen);
aDC.MoveTo(m_StartPoint);
aDC.LineTo(point);
::ReleaseDC(m_hWnd,aDC.m_hDC);*/
//第三種,用CClient類繪圖,使用CPen類構造畫筆,跟第二種方法不同的是用CClientDC時不用手動去獲取DC,和釋放DC
CClientDC aDC(this); //CClientDC的構造函數需要一個參數,這個參數是指向繪圖窗口的指針,我們用this指針就可以了
CPen pen(PS_SOLID,1,m_Color); 建立一個畫筆類對象,構造時設置畫筆屬性
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);
}
運行程序,就可以畫出紅色的線條來,如果想畫其它顏色,只需要設置m_Color的值即可,例如,要設置成綠色,可以在View類的構造函數處把m_Color(RGB(255,0,0))改寫成m_Color(RGB(0,255,0))。顏色的改變是通過設置RGB(0,255,0)中的三個參數來實現的。RGB中的三個參數分別對應三原色的紅、綠、藍,每一個參數的取值范圍都是0~255,通過不同數值的組合,就可以畫出各種各樣的顏色來了。