|
|
||||
Tips > |
|||||
GetDeviceCaps で画面の色と領域を取得する |
更新 : 2009/04/28 |
||||
|
|
||
解説: 解像度の取得には、GetDeviceCaps 関数を使用します。この関数は、引数に定数を指定することで、デバイス固有の得たい情報が戻り値として返ってきます。情報として、画面の幅やピクセルあたりのカラービット数などが得られます。 int GetDeviceCaps(hdc, nIndex) HDC hdc; // デバイスコンテキストのハンドル int nIndex; // 取得したい情報を表す定数を指定 使用例: 以下は、画面の色数と画面の領域を取得する例です(上記の方法と違うやり方)。 準備としては、Button とMemo を配置します。 Button をクリックすると画面の色数と画面の領域を取得して、Memo に表示します。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // 画面を取り込む HDC dc = GetDC(0);// デバイスコンテキストのハンドルを取得 // ピクセルあたりのカラービット数×カラープレーン(※)数 int colorBitCount = GetDeviceCaps(dc, BITSPIXEL) * GetDeviceCaps(dc, PLANES); Memo1->Lines->Add("画面の色数:" + IntToStr(colorBitCount)); // 画面の領域 int width = GetDeviceCaps(dc, HORZRES); // ディスプレイの幅 int height = GetDeviceCaps(dc, VERTRES); // ディスプレイの高さ Memo1->Lines->Add("画面の領域:" + IntToStr(width) + "×" + IntToStr(height)); // デバイスコンテキストを解放 ReleaseDC(0, dc); } //------------------------------------------------------------------- ※カラープレーン コンピュータグラフィックスでの色定義では大半が 8 ビットを単位としています。8 ビットの単位を "チャンネル" と呼ぶ場合や、"カラー プレーン" と呼ぶ場合があります。 |