1. 程式人生 > >vs2010、MFC視窗中繪製點、線、面

vs2010、MFC視窗中繪製點、線、面

詳細地記錄了一下在VS2010中建立MFC工程的過程,以及繪製點、線、面功能的實現。因為是教學所用,所以過程記錄的比較繁瑣。主要包含了如何建立在MFC中建立MFC工程、繪製固定座標的圖形、通過滑鼠繪製線段。

一、建立MFC工程

 

這裡就是我們剛剛建好的MFC工程了,啟動除錯後可以看到預設的介面。 

二、MFC中繪製點、線、面功能的實現

在資源檢視中開啟【Menu】選單下的【IDR_MAINFRAME】,可以看到MFC介面,我們可以在上面編輯選單。

編輯選單欄,新增一個繪圖選項,並在下面新增四子選單,繪點,繪線,繪矩形,繪橢圓

在子選單下右鍵單擊繪點,選擇【新增事件處理程式】

訊息型別選擇【COMMAND】,類列表選擇【CMFC_DrawView】

點選【新增編輯】按鈕後,會自動在【MFC_DrawView.cpp】下新增一個響應函式,把我們需要進行的操作寫在這個裡面。

繪製點的程式碼:

CClientDC  dc(this);

dc.setPixel(50, 50, RGB(255 , 0 , 0));

三個引數分別為點的X座標,Y座標,和點的顏色。

注意,這裡是螢幕座標,以檢視的左上角為原點(0,0),向右為X軸正方向,向下為Y軸正方向。

按照相同的步驟新增繪直線的響應事件,在【函式處理程式名稱】中,可以更改函式名

//構造一個DC,傳入當前物件.表示在當前物件使用.

CClientDC dc(this);

//建立一個畫筆.(線的型別, 寬度, 顏色);

CPen pen(PS_SOLID, 1, RGB(255, 0, 255));

//把畫筆選到設定描述表當中.覆蓋預設畫筆.

dc.SelectObject(&pen);

//畫直線.

dc.MoveTo(100,50);        

dc.LineTo(200,200);

//MoveTo() 函式傳入的是直線起點的座標

//LineTo() 函式傳入的引數是直線中點的座標  

新增繪製矩形的響應事件,繪製矩形函式傳入的四個引數矩形的左上右和右下角的點的座標值。

加繪製橢圓的響應事件,傳入的引數是和矩形一樣,繪製的是矩形的內接橢圓,如果是正方形,則繪製的是圓。

三、通過滑鼠移動繪製直線

在【類檢視】中找到【CMFC_DrawView】,右鍵開啟屬性。

找到【WM_LBUTTONDOWN,】,過載【OnLButtonDown】和【OnLButtonUp】函式,這兩個函式分別響應滑鼠在檢視中的【按下】和【彈起】事件。

在【解決方案管理器】開啟【MFC_DrawView.h】標頭檔案,在【public】下新增兩個【CPoint】

 

在【MFC_DrawView.cpp】中分別為【OnLButtonDown】和【OnLButtonUp】函式,新增如下程式碼,滑鼠第一按下時,獲取當前滑鼠的位置,賦值給【spoint】,滑鼠彈起時,將滑鼠的位置賦值為【epoint】,然後執行繪圖函式。