DrawDib 関数について
[このページに関連付けられている機能 DrawDib は、従来の機能です。 MediaComposition クラスに置き換わりました。 MediaComposition クラスは、Windows 10とWindows 11用に最適化されています。 可能であれば、新しいコードで DrawDib ではなく MediaComposition クラスを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
DrawDib 関数はまとめて StretchDIBits 関数に似ていますが、イメージ ストレッチ機能とディザリング機能が提供されます。 ただし、DrawDib 関数では、イメージの圧縮解除、データ ストリーミング、より多くのディスプレイ アダプターがサポートされています。
状況によっては DrawDib 関数を使用すると便利です。 それでも、 StretchDIBits は DrawDib 関数よりも多様であり、DrawDib 関数が目的の機能を提供できない場合に使用する必要があります。 次の一覧では、DrawDib 関数と StretchDIBits のどちらを使用するかを決定する際に考慮すべき要素について説明します。
カラー テーブル情報の形式。 DrawDib 関数は、カラー テーブルに DIB_RGB_COLORS 形式を使用する画像を表示します。 アプリケーション内のイメージにDIB_PAL_COLORS形式または DIB_PAL_INDICES 形式のカラー テーブル情報 が 格納されている場合は、 StretchDIBits を使用して表示する必要があります。
転送モード。 DrawDib 関数では、アプリケーションで SRCCOPY 転送モードを使用する必要があります。 アプリケーションで SRCCOPY 以外の転送モードで StretchDIBits を使用する場合は、引き続き StretchDIBits を使用する必要があります。 同様に、XOR など、アプリケーションで他のラスター操作を使用する必要がある場合は、 StretchDIBits を使用します。
ビデオとアニメーションの再生の品質。 DrawDib 関数は、ビデオ クリップやアニメーションシーケンスを再生するアプリケーションなど、データ ストリーミング アプリケーションに使用できます。 DrawDib 関数は、高品質の画像を提供し、再生中のモーションを改善するという点で StretchDIBits よりも優れた機能を備えています。
ディスプレイ アダプター。 DrawDib 関数では、 StretchDIBits でサポートされている数よりも多くのディスプレイ アダプターがサポートされています。 DrawDib 関数は、4 ビットの画像深度を使用する 16 色パレットを提供する VGA カラー アダプター、8 ビットイメージ深度を使用する 256 カラー パレットを提供する SVGA アダプター、16 ビット、24 ビット、32 ビットの画像深度を使用して何千もの色を提供する true-color ディスプレイ アダプターをサポートします。
DrawDib 関数は、より限られた機能を備えたディスプレイ アダプターに画像を表示する速度と品質も向上します。 たとえば、8 ビット ディスプレイ アダプターを使用する場合、DrawDib 関数は、実際の色の画像を 256 色に効率的にディザリングします。 また、4 ビット ディスプレイ アダプターを使用する場合は、8 ビット イメージもディザリングします。
イメージストレッチ。 StretchDIBits と同様に、DrawDib 関数では、ソース四角形と変換先の四角形を使用して、表示されるイメージの部分を制御します。 イメージの不要な部分をトリミングしたり、ソース四角形とコピー先の四角形の位置とサイズを変更してイメージを拡大したりできます。 ディスプレイ ドライバーがイメージ ストレッチをサポートしていない場合、DrawDib 関数は StretchDIBits よりも効率的なストレッチ機能を提供します。
圧縮されたイメージ。 DrawDib 関数は、実行長エンコード (RLE)、Cinepak、411 YUV など、圧縮解除機能を備えた任意の形式を描画します。 Windows には、必要に応じてインストールできる RLE および Cinepak 圧縮解除器が含まれています。
Indeo コーデックは Windows ではサポートされなくなりました。
関連トピック