Platform SDK: DirectX

ステップ 1 : カラー キーの設定

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。

[C++]

他の DirectDraw サンプルでも、他の関数に doInit サンプル関数を見つけることができる。しかし、DDEx4 のサンプルには、スプライトのためのカラー キーを設定するコードがある。カラー キーは、透過性に使われる色の値を設定する。システムにハードウェア ブリットがある場合、矩形のすべてのピクセルはカラー キーとして設定された値を除き、サーフェス上の非矩形スプライトを作成しながらブリットされる。次のコードでは、DDEx4 でカラー キーを設定する方法について示す。

//  このビットマップ (黒) に対するカラー キーを設定する。
DDSetColorKey(lpDDSOne, RGB(0,0,0)); 
 
return TRUE; 
 

カラー キーを選択するには、DDSetColorKey サンプル関数の呼び出しで指定したい色の RGB 値を設定する。黒の RGB 値は、(0, 0, 0) である。DDSetColorKey 関数は、DDColorMatch 関数を呼び出す (両関数は Ddutil.cpp にある)。DDColorMatch 関数は、lpDDSOne サーフェスにあるビットマップの (0, 0) で、ピクセルの現在のカラー値を格納する。次に、与えられた RGB 値を取得して、(0, 0) でピクセルをその色に設定する。最後に、利用可能なピクセルごとのビット数で、そのカラー値をマスクする。この処理が終わると、元の色は (0, 0) に戻され、呼び出しが実際のカラー キー値と共に DDSetColorKey に戻る。呼び出しが戻ると、カラー キー値は DDCOLORKEY 構造体の dwColorSpaceLowValue メンバに配置される。また、dwColorSpaceHighValue メンバにもコピーされる。そして、IDirectDrawSurface7::SetColorKey を呼び出すことで、カラー キーを設定する。

DDSetColorKey および DDColorMatch の CLR_INVALID を参照していることに気付いたかもしれない。DDEx4 で DDSetColorKey の呼び出しにカラー キーとして CLR_INVALID を渡す場合、ビットマップの左上角 (0, 0) のピクセルがカラー キーとして使われる。DDEx4 のビットマップが渡されても、(0, 0) でピクセルの色は灰色がかっているためにあまり意味はない。ただし、DDEx4 サンプルのカラー キーとして (0, 0) でピクセルを使う方法を見たければ、描画アプリケーションで All.bmp ビットマップ ファイルを開き、(0, 0) で 1 つのピクセルを黒に変更する。この変更は必ず保存すること (変更が見られなくなるため)。次に、DDSetColorKey を呼び出す DDEx4 の行を以下のように変更する。

DDSetColorKey(lpDDSOne, CLR_INVALID); 
 

DDEx4 のサンプルを再コンパイルすると、新しいビットマップがあるために、リソース定義ファイルも再コンパイルされることを確認する (確認するには、Ddex4.rc ファイルに 1 つの空間を追加しそれを削除すればよい)。DDEx4 サンプルは、現時点でカラー キーとして黒に設定された (0, 0) でピクセルを使うようになる。

次項 :ステップ 2 : 簡単なアニメーションの作成