標籤:strong os 資料 io 代碼 工作
l GDI圖形介面
l 繪製圖形
l DC,HDC裝置CDC類
l 繪製矩形
一、瞭解GDI與GUI
GDI是Graphics Device Interface的縮寫,含義是圖形裝置介面,它的主要任務是負責系統與繪圖程式之間的資訊交換,處理所有Windows程式的圖形輸出。
在Windows作業系統下,絕大多數具備圖形介面的應用程式都離不開GDI,我們利用GDI所提供的眾多函數就可以方便的在螢幕、印表機及其它輸出裝置上輸出圖形,文本等操作。GDI的出現使程式員無需要關心硬體裝置及裝置驅動,就可以將應用程式的輸出轉化為硬體裝置上的輸出,實現了程式開發人員與硬體裝置的隔離,大大方便了開發工作。
GDI:圖形裝置介面,包括了繪圖的所有元素,例如畫筆,畫刷,線,點,矩形等所有和繪圖有關的東西。這些都被MFC封裝在CDC類中,這個類包含了所有的繪圖函數。
GUI:圖形使用者介面,這個是 windows引進一個概念,指的是使用者和電腦有一個操作介面,使用者在這個介面上的操作都是可見的,不象DOS下只有輸入命令,電腦執行。
區別:
GUI是程式人機介面,相對於DOS類的字元介面而言;GDI是編程介面,通常所說的就是指Windows下的圖形裝置編程介面。
二、DC,HDC與CDC
DC裝置環境(Device Context的縮寫,裝置描述表,裝置上下文都是說的它)是Windows中的一種資料結構,它包含GDI需要的所有關於顯示介面情況的描述欄位,包括相連的物理裝置和各種各樣的狀態資訊。
HDC是API裡的一個資料類型,是DC的控制代碼。
CDC是MFC中對DC相關資料及函數的一個封裝的類。
HDC與CDC的關係 就如同HWND與CWnd的關係;
三、繪製矩形
1、//API 繪製
BOOL Rectangle(
HDC hdc, // 裝置描述表控制代碼(指定一個用於繪圖的地方)
int nLeftRect, / /矩形的左上方X座標
int nTopRect, //矩形的左上方Y座標
int nRightRect, //矩形的右下角X座標
int nBottomRect //矩形的左下角Y座標
);
HDC擷取
HDC GetDC(
HWND hWnd // handle to a window
);
HDC GetWindowDC(
HWND hWnd // handle of window
);
2、CDC類繪製
CDC::Rectangle //類成員函數
BOOL Rectangle(int x1, int y1, int x2, int y2 );
BOOL Rectangle(LPCRECT lpRect );
CDC擷取
CWnd::GetDC
CDC* GetDC( );
CWnd::GetWindowDC
CDC*GetWindowDC( );
//用完後 記得釋放掉 不然多佔資源 而且容易出錯
int ReleaseDC(
HWND hWnd, // 視窗控制代碼
HDC hDC // DC裝置控制代碼
);
四、在DC上繪製矩形代碼測試
void CDialog_Thread_Priority_test::OnBnClickedButton4()
{
// TODO: 在此添加控制項通知處理常式代碼
HDC dc=::GetDC(m_hWnd);//擷取DC
//HDC dc=::GetWindowDC(m_hWnd);//包含非客戶區(標題列以及功能表列工具列)
::Rectangle(dc,1,1,101,21);//繪製一個矩形
::ReleaseDC(m_hWnd,dc); //釋放掉DC
//CDC版本
// CDC* pdc=GetDC();//CWnd
//pdc->Rectangle(1,1,101,21);
//ReleaseDC(pdc);
}