Device-Dependent ビットマップ
デバイス依存ビットマップ (DDB) は、単一の構造体である BITMAP 構造体を使用して記述されます。 この構造体のメンバーは、四角形領域の幅と高さをピクセル単位で指定します。デバイス パレットからピクセルにエントリをマップする配列の幅。1 ピクセルあたりのカラー プレーンとビット数の観点から、デバイスのカラー形式を指定します。 アプリケーションは、GetDeviceCaps 関数を呼び出し、適切な定数を指定することで、デバイスの色形式を取得できます。 DDB には色の値が含まれていないことに注意してください。代わりに、色はデバイスに依存する形式になります。 詳細については、「ビットマップ の色」を参照してください。 各デバイスは独自の色のセットを持つ可能性があるため、1 つのデバイス用に作成された DDB が別のデバイスに適切に表示されない可能性があります。
デバイス コンテキストで DDB を使用するには、そのデバイス コンテキストのカラー編成が必要です。 したがって、DDB は多くの場合、互換性のあるビットマップ と呼ばれ、通常、DIB よりも GDI のパフォーマンスが向上します。 たとえば、ビデオ メモリ用のビットマップを作成するには、プライマリ ディスプレイと同じ色形式の互換性のあるビットマップを使用することをお勧めします。 ビデオ メモリに入ると、ビットマップにレンダリングして画面に表示する方が、システム メモリサーフェスや DIB から直接表示するよりも大幅に高速になります。
GDI パフォーマンスの向上に加えて、互換性のあるビットマップを使用してイメージをキャプチャし (イメージ のキャプチャ を参照)、メニューの実行時にビットマップを作成する方法については、「メニューの使用」の「ビットマップの作成」を参照してください (メニュー の使用 を参照)。
異なる色の編成のデバイス間でビットマップを転送するには、GetDIBitsを使用して互換性のあるビットマップを DIB に変換し、SetDIBits または StretchDIBits を呼び出して、DIB を 2 番目のデバイスに表示します。
DDB には、破棄可能と非カード化の 2 種類があります。 破棄可能な DDB は、ビットマップが DC に選択されておらず、システム メモリが不足している場合にシステムが破棄するビットマップです。 CreateDiscardableBitmap 関数は、破棄可能なビットマップを作成します。 CreateBitmap、CreateCompatibleBitmap、CreateBitmapIndirect関数は、非カード化できないビットマップを作成します。
アプリケーションは、必要な構造体を初期化し、CreateDIBitmap 関数を呼び出すことによって、DIB から DDB を作成できます。 CreateDIBitmap 呼び出しでCBM_INITを指定することは、CreateCompatibleBitmap 関数を呼び出してデバイスの形式で DDB を作成し、SetDIBits 関数を呼び出して DIB ビットを DDB に変換することと同じです。 デバイスが SetDIBits 関数をサポートしているかどうかを確認するには、GetDeviceCaps 関数を呼び出し、RASTERCAPS フラグとしてRC_DI_BITMAPを指定します。