16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"DrawDibDraw (宣言)"
この発言に対し以下のコメントが寄せられています
#01143 Fermion さん DrawDibDraw (サンプル)
#01145 Fermion さん DrawDibDraw (サンプル)
■説明
DrawDibDraw による描画のサンプルで使用する APIを宣言したユニット
です。
以下を切り取り "DrawDibAPI.pas" というファイル名で保存して下さい。
■その他
各関数の詳細は、API のヘルプ、または次のホームページなどでご確認
下さい。
http://search.microsoft.com/japan/SearchMS.asp
■ユニット
//=========================================================================
unit DrawDibAPI;
interface
uses
Windows;
type
HDRAWDIB = THandle; {* DrawDib DC Handle *}
const
{**************************************************************************
DrawDib Flags
**************************************************************************}
DDF_0001 = $0001; {* ;Internal *}
DDF_UPDATE = $0002; {* re-draw the last DIB *}
DDF_SAME_HDC = $0004; {* HDC same as last call (all setup) *}
DDF_SAME_DRAW = $0008; {* draw params are the same *}
DDF_DONTDRAW = $0010; {* dont draw frame, just decompress *}
DDF_ANIMATE = $0020; {* allow palette animation *}
DDF_BUFFER = $0040; {* always buffer image *}
DDF_JUSTDRAWIT = $0080; {* just draw it with GDI *}
DDF_FULLSCREEN = $0100; {* use DisplayDib *}
DDF_BACKGROUNDPAL = $0200; {* Realize palette in background *}
DDF_NOTKEYFRAME = $0400; {* this is a partial frame update, hint *}
DDF_HURRYUP = $0800; {* hurry up please! *}
DDF_HALFTONE = $1000; {* always halftone *}
DDF_2000 = $2000; {* ;Internal *}
DDF_PREROLL = DDF_DONTDRAW; {* Builing up a non-keyframe *}
DDF_SAME_DIB = DDF_SAME_DRAW;
DDF_SAME_SIZE = DDF_SAME_DRAW;
{**************************************************************************
DrawDib functions (一部のみ)
**************************************************************************}
{--------------------------------------------------------------------------
DrawDibOpen
DrawDib ライブラリを開き、描画のために DrawDib デバイスコンテキスト
を作成する。
--------------------------------------------------------------------------}
function DrawDibOpen: HDRAWDIB; stdcall;
{--------------------------------------------------------------------------
DrawDibClose
DrawDib DCを閉じ、DrawDib がそれに割り当てたリソースを解放する。
パラメータ
hdd
DrawDib デバイスコンテキストのハンドルを指定。
--------------------------------------------------------------------------}
function DrawDibClose( hdd: HDRAWDIB ): BOOL; stdcall;
{--------------------------------------------------------------------------
DrawDibRealize
指定された DC と共に使う DrawDib DC のパレットを実体化する。
パラメータ
hdd
DrawDib DC のハンドルを指定。
hdc
パレットが入った DC のハンドルを指定。
fBackground
背景パレットのフラグを指定。この値が 0以外の場合、パレットは背景
パレット。この値が 0で DC がウィンドウにアタッチされている場合は、
ウィンドウが入力フォーカスを受けると論理パレットが前景パレットに
なる(ウィンドウクラススタイルが CS_OWNDC であるか、または GetDC
関数で DC が取得されると、DC はウィンドウにアタッチされる)。
背景パレットに、DrawDib DC のパレットを選択するには、DrawDibDraw
関数を使って DDF_BACKGROUNDPAL フラグをセットする。
--------------------------------------------------------------------------}
function DrawDibRealize( hdd: HDRAWDIB; hdc: HDC;
fBackground: BOOL ): UINT; stdcall;
{--------------------------------------------------------------------------
DrawDibDraw
DIB を描画する。
パラメータ
hdd
DrawDib デバイスコンテキストのハンドル。
hdc
デバイスコンテキストのハンドル。
xDst
送信先長方形の左上角の y 座標を MM_TEXT クライアント座標単位で
指定。
yDst
送信先長方形の左上角の y 座標を MM_TEXT クライアント座標単位で
指定。
dxDst
送信先長方形の幅を MM_TEXT クライアント座標単位で指定。
dxDst が -1 の場合は、ビットマップの幅。
dyDst
送信先長方形の高さを MM_TEXT クライアント座標単位で指定。
dyDst が -1 の場合は、ビットマップの高さ。
lpbi
イメージフォーマットが入った BITMAPINFOHEADER 構造体のアドレス
を指定。DIB の BITMAPINFOHEADER 内のカラーテーブルはそのフォー
マットに従い、biHeight メンバは必ず正値。
DrawDibDraw は反転した DIB の描画は行わない。
lpBits
ビットマップのビットが格納されているバッファのアドレス。
xSrc
送信元長方形の左上角の x 座標をピクセル単位で指定。
座標 (0,0) は、ビットマップの左上角。
ySrc
送信元長方形の左上角の y 座標をピクセル単位で指定。
dxSrc
送信元長方形の幅をピクセル単位で指定。
dySrc
送信元長方形の高さをピクセル単位で指定。
wFlags
描画に適用されるフラグを指定(上記 DrawDib Flags 参照)。
※DDF_BACKGROUNDPAL
表示に使われている実際のパレットを変更せず、バックグラウンド
で描画に使われているパレットを実体化する。
DDF_SAME_HDC が設定されていない場合だけ有効。
--------------------------------------------------------------------------}
function DrawDibDraw( hdd : HDRAWDIB;
hdc : HDC;
xDst, yDst,
dxDst, dyDst: Integer;
lpbi : PBitmapInfoHeader;
lpBits : Pointer;
xSrc, ySrc,
dxSrc, dySrc: Integer;
wFlags : LongWord ): BOOL; stdcall;
{*************************************************************************}
implementation
{**************************************************************************
DrawDib functions (一部のみ)
**************************************************************************}
function DrawDibOpen; external 'msvfw32.dll' name 'DrawDibOpen';
function DrawDibClose; external 'msvfw32.dll' name 'DrawDibClose';
function DrawDibRealize; external 'msvfw32.dll' name 'DrawDibRealize';
function DrawDibDraw; external 'msvfw32.dll' name 'DrawDibDraw';
{*************************************************************************}
end.
//=========================================================================
00/7/17(Mon) 00:33pm Fermion [KHF03264]
Original document by Fermion 氏 ID:(KHF03264)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|