パレット

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 を使用してイメージを再描画できます。 DrawDib DC でDDF_ANIMATE フラグが設定されている場合は、DrawDibDraw または DrawDibRealize を使用して、パレットと表示されるビットマップの色をアニメーション化できます。 DrawDibEnd 関数と DrawDibBegin 関数を使用して、DDF_ANIMATE フラグを更新できます。

注意

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

 

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

イメージのレンダリング