次の方法で共有


メモリ デバイス コンテキスト

アプリケーションが出力を実際のデバイスに送信するのではなくメモリに配置できるようにするには、メモリ デバイス コンテキストと呼ばれるビットマップ操作に特別なデバイス コンテキストを使用します。 メモリ DC を使用すると、システムはメモリの一部を仮想デバイスとして扱えます。 これはメモリ内のビットの配列であり、通常の描画サーフェイスに作成されたビットマップのカラー データを一時的に格納するためにアプリケーションで使用できます。 ビットマップはデバイスと互換性があるため、メモリ DC は、互換性のあるデバイス コンテキストとも呼ばれます。

メモリ DC は、特定のデバイスのビットマップ イメージを格納します。 アプリケーションは、CreateCompatibleDC 関数を呼び出すことによって、メモリ DC を作成できます。

メモリ DC の元のビットマップは、単なるプレースホルダーです。 寸法は 1 ピクセル x 1 ピクセルです。 アプリケーションは、描画を開始する前に、SelectObject 関数を呼び出すことによって、適切な幅と高さのビットマップを DC に選択する必要があります。 適切なディメンションのビットマップを作成するには、CreateBitmap、CreateBitmapIndirect、または CreateCompatibleBitmap関数使用します。 メモリ DC にビットマップを選択した後、システムは、指定されたピクセルの四角形の色情報を格納するのに十分な大きさの配列で単一ビット配列を置き換えます。

CreateCompatibleDCによって返されたハンドルアプリケーションが描画関数の 1 つに渡されると、要求された出力はデバイスの描画サーフェイスに表示されません。 代わりに、システムは結果の線、曲線、テキスト、または領域の色情報をビット配列に格納します。 アプリケーションは、メモリに格納されているイメージを、BitBlt 関数を呼び出して、ソース デバイス コンテキストとしてメモリ DC を識別し、ウィンドウまたは画面 DC をターゲット デバイス コンテキストとして描画サーフェイスにコピーできます。

DIB または DIB から作成された DDB をパレット デバイスに表示する場合は、システム パレットのレイアウトに合わせて論理パレットを配置することで、イメージの描画速度を向上させることができます。 これを行うには、numRESERVED 値 GetDeviceCaps を呼び出して、システム内の予約済み色の数を取得します。 次 GetSystemPaletteEntries を呼び出し、論理パレットの最初と最後の NUMRESERVED/2 エントリに対応するシステム カラーを入力します。 たとえば、NUMRESERVED が 20 の場合は、論理パレットの最初と最後の 10 個のエントリにシステム の色を入力します。 次に、論理パレットの残りの 256 NUMRESERVED 色 (この例では残りの 236 色) に DIB の色を入力し、これらの各色に PC_NOCOLLAPSE フラグを設定します。

カラーとパレットの詳細については、「色の」を参照してください。 ビットマップとビットマップ操作の詳細については、「ビットマップの 」を参照してください。