GDI圖形、C\HDC\CDC

來源:互聯網
上載者:User

標籤: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);

          

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.