- ベストアンサー
DXライブラリの透過処理について
- #DXライブラリ #透過処理 #ペイント #PNGファイル形式
- DXライブラリを使用してmura.pngの透過処理を行おうとしていますが、うまくいきません。Win10のペイントで作ったpngファイル形式に対応していない可能性があります。原因を教えてください。
- DrawGraph関数の引数に渡しているmura.pngの左上のカラーキーを使用して透過処理を行おうとしていますが、期待通りの結果が得られません。可能性としては、Win10のペイントで作成したpngファイル形式に対応していない可能性があります。詳細な原因を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
bmpでは正しく動くとなると、ちょっと原因がわからないですね・・・。 Windows10のペイントでpng形式で保存すると、使用はしていないければアルファ情報が含まれていたりするのかもしれないですね(完全に推測です…)。 画像サイズが大きくても問題ないのでしたら、 ひとまずはbmp形式でプログラム進めていったほうが良いかもしれないですね。 原因特定は時間かかりそうですし・・・。
その他の回答 (2)
- heburusu
- ベストアンサー率85% (140/164)
試して頂きありがとうございます。 >SetTransColor( 255, 0, 0 ) ; >それも試してみましたが、無理でした、泣。 一応ですが、(255,0,0)をそのまま指定してもできないと思います。 >LoadDivGraph("mura.png",1,1,1,32,32,mapchip[1]); mura.pngで左上(透過させたい色)のRGBをSetTransColorする必要があります。 mura.pngの左上のRGBを指定しても透過できませんか?
お礼
>mura.pngの左上のRGBを指定しても透過できませんか? (255,0,0)赤でも(255,242,0)黄色でもダメでした。 前のプログラムに戻って SetTransColor(255, 242, 0); gazo = LoadGraph("mura.png"); にしても、この前は透過したのですが、しませんでした。 何かファイル設定等が問題あるかもしれません。
- heburusu
- ベストアンサー率85% (140/164)
LoadDivGraphで画像を読み込む前に、SetTransColorで透過させる色を指定する必要があるような気がします。 デフォルトは黒(0, 0, 0)が指定されているようです。 >例えばある画像ファイルの真っ赤( R = 255, G = 0, B = 0 )な部分を透過色としたい場合は、 > その画像ファイルを LoadGraph などで読み込む前に SetTransColor( 255, 0, 0 ) ; を実行しておきます。
お礼
SetTransColor( 255, 0, 0 ) ; それも試してみましたが、無理でした、泣。 以前のステップの SetTransColor(255, 242, 0); gazo = LoadGraph("敵画像/b.png"); では透過するのです。 LoadDivGraphではなぜか透過しません。
補足
新たにa.bmpというbmpファイルを作って、 SetTransColor(255, 242, 0); LoadDivGraph("a.bmp",1,1,1,32,32,mapchip[1]); と書き直して透過に成功しました。 pngにこだわらなくてもbmpでもいいのですが、ファイルの何かの構造で失敗したりするかもしれません。 原因は不明です。
お礼
原因がわかるまでBMP形式でやってみようと思います。 気分次第いろいろやったら原因が特定できるかもしれません。 また詰まったらよろしくです。