DirectDrawのカラーキーについて

解決


タンク  2002-12-19 02:15:57  No: 76694

DirectDrawで透過色のカラーキーを
SetColorKeyメソッドを使って設定したのですが、
うまく転送されません。

Dim C As DDCOLORKEY
C.high = RGB(255,0,255)
C.low = RGB(255,0,255)

Surface.Surface.SetColorKey DDCKEY_SRCBLT, C

とやって、紫の部分を透過させたいのですが、うまくいかないのです。
黒を指定したときは透過されるので、色の入力がRGBだといけないのではないかと思うのですが、どうすればいいでしょうか?


上流 美咲  2003-01-28 02:36:59  No: 76695

DirectX関係でRGB関数は使えません。
というよりも正確な値が返るのが白と黒だけなんです。
かわりにDirectX7オブジェクトの持つCreateRGBメソッドを使えばうまくいきますよ


神流美咲  2003-01-30 04:21:09  No: 76696

すみません。違う理由がある、というかむしろそっちの確率の方が高いです。
もし16bitカラーを使用していた場合DirectXはカラー情報も16bitで扱います(RGB関数は24bitです)また32bitの場合は32bitで扱われます。つまり普通のRGB関数もCretaeRGBも役に立たない場合があるということです。ビットマップから色の情報を取得し自らでどこからどこまでのbitがどの色の情報かを見極めていろ情報を作成する関数を作る必要があります。
一応以下がサンプルです。以下のサンプルは緑の要素が6bitと考えた場合ですが

Public Function Get16BitRGB(R As Long, G As Long, B As Long)
    Get16BitRGB = R / (255 / 31) * 2048 + G / (255 / 63) * 32 + B / (255 / 31)
End Function


タンク  2003-02-06 02:39:27  No: 76697

ありがとうございます!
サンプルを使用してカラーキーを設定したところ
成功しました。

レス遅れてすいません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加