鼠標繪制簡單圖形
功能:
1、繪制的圖形包括直線、橢圓和矩形,通過菜單對繪制的圖形切換
2、在視圖中使用鼠標動態的繪制圖形
分析:
當窗口尺寸發生變化時,引起窗口重繪,會發送WM_PAINT消息,這時首先會擦除窗口的背景,然後再進行重繪操作,這樣就把窗口中先前繪制的圖形擦除掉了;可以將繪制圖形的三要素(起點、終點、繪制類型)保存下來,在窗口重繪調用程序視圖類窗口的OnDraw函數中再將圖形根據保存的三要素重新輸出;
1、數據
在視圖中添加兩個點坐標
CPoint m_ptOrigin; //起點坐標
CPoint m_ptEnd; //終點坐標
UINT m_nDrawType; //圖形的類型,0:不繪制;1:直線;2:橢圓;3:矩形;
BOOL m_bFlag; //是否繪制圖形
2、繪制過程
2.1--LBUTTONDOWN
1)保存圖形的起點
2)m_bFlag=TRUE; //開始繪制
2.2--MOUSEMOVE
if(m_bFlag){
//擦除舊線
//畫新線
}
2.3--LBUTTONUP
m_bFlag=FALSE; //繪制結束
實現:
創建單文檔類型的MFC工程:Graphic,在資源窗口中的菜單欄中添加頂層菜單項“繪圖”,並添加下拉菜單項:IDM_DOT(點)、IDM_LINE(直線)、IDM_RECTANGLE(矩形)、IDM_ELLIPSE(橢圓);在工程的視圖類CGraphicView類中添加私有成員變量:UINT m_nDrawType,並在視圖類的構造函數中將其初始化為0,在不同的菜單項的消息響應函數中將m_nDrawType設為不同的值以標識不同的繪制圖形:點--1、直線--2、矩形--3、橢圓--4;
在視圖類CGraphicView類中添加私有成員變量:CPoint m_ptOrigin,並在視圖類的構造函數中將該變量初始化為0,在鼠標左鍵按下的消息響應函數中用以保存左鍵按下時的坐標;
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_ptOrigin=point; CView::OnLButtonDown(nFlags, point); }
鼠標繪制簡單圖形