パレット

DrawDib 関数では、アプリケーションが 2 つのパレット指向メッセージ (WM _ QUERYNEWPALETTEWM _ PALETTECHANGED) に応答する必要があります。 アプリケーションがパレットに対応していない場合は、これらの各メッセージのハンドラーを追加する必要があります。 WM _ QUERYNEWPALETTE および WM _ PALETTECHANGED メッセージの処理の詳細については、「パレット メッセージ ハンドラーの追加 」を参照してください

DrawDibRealize 関数を使用して、DC に対する現在の DrawDib パレットを実現 できます。 WM _ QUERYNEWPALETTEまたは WM _ PALETTECHANGEDメッセージに応答するか 、DrawDibDraw関数を使用してイメージ シーケンスを表示する準備をするときに、パレットを認識する必要があります。

DrawDibSetPalette関数を使用して、別のパレットにマップされたイメージを描画できます。 この関数は、DrawDib DC に指定されたパレットを強制的に使用します。これにより、イメージの品質に影響を与える可能性があります。 たとえば、パレットに対応するアプリケーションでは、パレットを実現し、DrawDib が独自のパレットを認識しなきれなける必要がある場合があります。 アプリケーションは DrawDibSetPalette を使用して、使用するパレットの DrawDib に通知できます。

DrawDibGetPalette関数を使用して、現在のフォアグラウンド パレットのハンドルを取得できます。 アプリケーションが現在のフォアグラウンド パレットを使用している場合は、パレットを排他的に使用する必要が生じ、別のアプリケーションがパレット ハンドルを無効にできます。 使用が完了したら、アプリケーションでパレットを解放する必要があります。 パレットを解放すると、別のアプリケーションのパレット ハンドルが無効になる可能性があります。

DrawDibChangePalette関数を使用して、パレットの新しい色の値を受け取る DrawDib を準備できます。 DrawDibChangePalette の次のコードでは、パレットカラー テーブルに新しい値を割り当てる必要があります。 DrawDibChangePalette を呼び出す際に DrawDib DC で DDF _ ANIMATE フラグが設定されていない場合は 、DrawDibRealizeを使用してパレットの変更を適用してパレットを実現できます。 その後 、DrawDibDraw を使用して イメージを再描画できます。 DDF _ ANIMATE フラグが DrawDib DC で設定されている場合は 、DrawDibDraw または DrawDibRealize を使用して、パレットと表示されるビットマップの色をアニメーション化できます。 DrawDibEnd関数と DrawDibBegin関数を使用して 、DDF _ ANIMATE フラグを更新できます。

注意

DC で選択されているときに DrawDib パレットを解放すると、DC がパレットを使用するときにグラフィックス デバイス インターフェイス (GDI) エラーが発生する可能性があります。 代わりに、アプリケーションで DrawDibSetPalette を使用して、既定のパレットまたは別のパレットを使用する DrawDib DC を変更する必要があります。

DrawDibEnd関数 、DrawDibClose関数、および DrawDibBegin関数を使用すると、DrawDib パレットを解放できます。 ただし、これらの関数は、パレットが DC によって選択されていない場合にのみ使用する必要があります。 DrawDibDraw 関数は、同じ DrawDib DC を使用する場合にパレットを解放することもできますが、異なる描画パラメーター (lpbi、dxDst、dyDst、dxSrc、dySrc) または別の形式を指定します。

Image Rendering