C++/MFC-GDIプロット


一、GDIとGUIを理解する
GDIはGraphics Device Interfaceの略で、グラフィックデバイスインタフェースを意味し、その主な任務はシステムとグラフィックプログラム間の情報交換を担当し、すべてのWindowsプログラムのグラフィック出力を処理することである.
Windowsオペレーティングシステムでは、グラフィックインタフェースを備えたアプリケーションのほとんどがGDIから離れられません.GDIが提供する多くの関数を利用して、画面、プリンタ、その他の出力デバイスにグラフィック、テキストなどの操作を簡単に出力できます.
GDIの登場により、プログラマーはハードウェアデバイスやデバイスドライバに関心を持つ必要がなくなり、アプリケーションの出力をハードウェアデバイス上の出力に変換することができ、プログラム開発者とハードウェアデバイスの隔離を実現し、開発作業を大幅に便利にした.
GDI:グラフィックデバイスインタフェースは、ブラシ、ブラシ、線、点、矩形など、図面に関連するすべての要素を含む.これらはすべてMFCによってCDCクラスにカプセル化され,このクラスにはすべての描画関数が含まれている.
GUI:グラフィックユーザーインタフェース、これはwindowsが1つの概念を導入して、ユーザーとコンピュータが1つの操作インタフェースを持っていることを指して、ユーザーのこのインタフェースの上の操作はすべて見えて、DOSの下で命令を入力するだけではなくて、コンピュータは実行します.
 
違い:
GUIはプログラムヒューマン・インターフェースであり、DOS類の文字インターフェースに対して;
GDIはプログラミングインターフェースであり、一般的にWindows下のグラフィックデバイスプログラミングインターフェースを指す.
二、DC、HDCとCDC
DCデバイス環境(DeviceContextの略、デバイス記述テーブル、デバイスコンテキストで言う)は、Windowsにおけるデータ構造である.
GDIに必要なすべての表示インタフェースの状況に関する説明フィールドが含まれており、接続された物理デバイスと様々な状態情報が含まれています.
HDCはAPIのデータ型であり、DCのハンドルである.
CDCは、MFCにおけるDC関連データおよび関数のカプセル化されたクラスである.
HDCとCDCの関係はHWNDとCWndの関係のようなものである.
三、長方形を描く
3.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
);
3.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( );
3.3リソースの解放
使い終わったら解放してください.そうしないと、リソースを多く占めてエラーが発生しやすくなります.int ReleaseDC(
HWND hWnd,//ウィンドウハンドル
HDC hDC//DCデバイスハンドル);
四、DCに矩形コードを描画するテスト
void CDialog_Thread_Priority_test::OnBnClickedButton4()
{
	// TODO:               
	//API  
	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); 
}
ウィンドウの位置が変更されたときに描画されたグラフィックが消えた場合、ウィンドウのWM_を表示できます.PAINTメッセージ.
五、残りのスクリーン図形描画関数
VS 2010/MFCプログラミング入門の49(グラフィック画像:CDCクラスとそのスクリーン描画関数)