<Return[D]><Top>

DrawDibDraw

Declare Function Api_DrawDibDraw& Lib "msvfw32" Alias "DrawDibDraw" (ByVal hdd&, ByVal hdc&, ByVal xDst&, ByVal yDst&, ByVal dxDst&, ByVal dyDst&, ByRef lpbi As BITMAPINFOHEADER, lpBits As Any, ByVal xSrc&, ByVal ySrc&, ByVal dxSrc&, ByVal dySrc&, ByVal wFlags&)

Declare Function DrawDibDraw Lib "msvfw32" (ByVal hdd As Long, ByVal hdc As Long, ByVal xDst As Long, ByVal yDst As Long, ByVal dxDst As Long, ByVal dyDst As Long, ByRef lpbi As BITMAPINFOHEADER, lpBits As Any, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dxSrc As Long, ByVal dySrc As Long, ByVal wFlags As Long) As Long

画面に DIB を描画する。

パラメータ
hdd
    DrawDib デバイスコンテキストのハンドルを指定する。
hdc
    デバイスコンテキストのハンドルを指定する。
xDst
    送信先長方形の左上角の y 座標を MM_TEXT クライアント座標単位で指定する。
yDst
    送信先長方形の左上角の y 座標を MM_TEXT クライアント座標単位で指定する。
dxDst
    送信先長方形の幅を MM_TEXT クライアント座標単位で指定する。dxDst に– 1 の場合は、ビットマップの幅が使われる。
dyDst
    送信先長方形の高さを MM_TEXT クライアント座標単位で指定する。dyDst が– 1 の場合は、ビットマップの高さが使われる。
lpbi
    イメージフォーマットが入った 構造体のアドレスを指定する。DIB の BITMAPINFOHEADER 内のカラーテーブルはそのフォーマットに従

    い、biHeight メンバは必ず正値になる。DrawDibDraw は反転した DIB の描画は行わない。lpBitsビットマップのビットを受け取るバッファ

    のアドレスを指定する。
xSrc
    送信元長方形の左上角の x 座標をピクセル単位で指定する。座標 (0,0) は、ビットマップの左上角を表す。
ySrc
    送信元長方形の左上角の y 座標をピクセル単位で指定する。座標 (0,0) は、ビットマップの左上角を表す。

dxSrc
    送信元長方形の幅をピクセル単位で指定する。
dySrc
    送信元長方形の高さをピクセル単位で指定する。
wFlags
    描画に適用されるフラグを指定する。次の値が定義されている。
    DDF_BACKGROUNDPAL
        表示に使われている実際のパレットを変更せずに、バックグラウンドで描画に使われているパレットを実体化する。この値は

        DDF_SAME_HDC が設定されていない場合だけ有効である。
    DDF_DONTDRAW
        現在のイメージは解凍されるが、描画されない。このフラグは DDF_PREROLL フラグに代わるものである。
    DDF_FULLSCREEN
        サポートされていない。
    DDF_HALFTONE
        DIB のパレットとは関係なく、DIB を常に標準パレットにディザ処理する。アプリケーションが DrawDibBegin 関数を使う場合は、この値

        を DrawDibDraw 関数ではなく DrawDibBegin 関数で設定する。
    DDF_HURRYUP
        データは描画する必要がない(つまり、データは破棄可能)ため、DDF_UPDATE を使ってこの情報を再呼び出しすることはない。

        DrawDib は、次のフレームを作成することが必要な場合にだけこの値をチェックし、それ以外の場合は無視する。
        この値は通常、ビデオとオーディオを同期させるのに使う。データを同期させるときは、ドライバが後続のフレームを解凍するためにフレーム

        をバッファリングする必要がある場合を想定し、アプリケーションはこの値をイメージとともに送信する。
    DDF_NOTKEYFRAME
        DIB データはキーフレームではない。
    DDF_SAME_HDC
        現在の DC ハンドルと、現在その DC に関連付けられているパレットを使う。
    DDF_SAME_DRAW
        DrawDibDraw 関数の現在の描画パラメータを使う。この値は、DrawDibDraw 関数または DrawDibBegin 関数の呼び出し以降、

        lpbi、dxDst、dyDst、dxSrc および dySrc の各パラメータが変更されていない場合にだけ使う。DrawDibDraw 関数は通常、パラメー

        タをチェックし、パラメータが変更されている場合は、DrawDibBegin 関数が描画のために DrawDib デバイスコンテキストを準備する。こ

        のフラグは DDF_SAME_DIB および DDF_SAME_SIZE フラグに代わるものである。
    DDF_UPDATE
        最後にバッファに入ったビットマップを再描画する。この値を設定して描画が失敗した場合、バッファに入れられたイメージは利用できな

        い。このため、表示を更新する前に新しいイメージを指定する必要がある。

戻り値
    関数が成功すると TRUE が返る。関数が失敗すると FALSE が返る。

解説
    DrawDibDraw 関数は、DDF_DONTDRAW でイメージを解凍するが、描画は行わない。その後 DDF_UPDATE を指定して

    DrawDibDraw 関数を呼び出すと、イメージが表示される。
    DrawDib デバイスコンテキストが指定されたオフスクリーンバッファを持たない場合に DDF_DONTDRAW を指定すると、フレームは直ちに

    画面に描画される。その後 DrawDibDraw 関数で DDF_UPDATE を指定すると、関数は失敗する。
    DDF_UPDATE と DDF_DONTDRAW は設定されるタイミングは違うが、これらを一緒に使って、オフスクリーンの合成イメージを作成する

    ことができる。オフスクリーンイメージが完成すると、DrawDibDraw 関数を呼び出してイメージを表示することができる。