パレット

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

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

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

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

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

Note

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

 

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

イメージのレンダリング