トップページ > 過去ログ > 記事閲覧
pngの画像が透過されない時がある
名前:nagou 日時: 2010/10/16 21:02

DrawGraphやDrawGraphScreenでpngファイルを呼び出した時に、 透過処理がされないことがあります。 同じツール(Windowsに付属しているペイント) を使って作ったいくつかの画像の中で、 R,B,G=(0,0,0)の色の部分が透過されるものとされないものがありました。 透過する色を指定する関数は使っていません。 画面モードは16bitにしています。 pngでは透過されなかった画像のファイル形式を bmpに変更すると、黒色の部分が問題無く透過されました。 黒の色の他に透過処理判定のための 要素があるのでしょうか?

Page: 1 |

Re: pngの画像が透過されない時がある ( No.1 )
名前:しゅぴ 日時:2010/10/17 00:14

はじめまして、こんばんは。 >黒の色の他に透過処理判定のための >要素があるのでしょうか? はっきり言ってその通りです。 フルカラーPNGには、RGBの値とは別に、 α(アルファ)チャンネルというものが付加されている場合があるんです。 αチャンネルはそのピクセルの不透明度を表しています。 これを使えば、画像の一部だけが半透明という表現を一枚の画像で実現できるのです。 Windows付属のペイントでは、半透明は扱えませんよね? 基本的にペイントで作ったPNG画像には、αチャンネルが付加されていないんですが、 αチャンネルが付加されている画像を元に作った場合は、見た目は全部不透明なのにαチャンネルが付加されたままになるみたいです。 LoadGraphScreen関数は、αチャンネルが付加されているとき、αチャンネルを使い、そうでないとき、 黒を透過処理するという作りになっているようです。 結局は、画像にαチャンネルが付いていたり付いていなかったりするのが原因です。 ペイントを使うのをやめてGIMPなどの高機能なソフトを使うか、PNGを使うのをあきらめるかしたほうがいいと思います。
Re: pngの画像が透過されない時がある ( No.2 )
名前:nagou 日時:2010/10/17 01:59

わかりました、他のソフトを使ってみることにします。 詳しい回答ありがとうございました!
Re: pngの画像が透過されない時がある ( No.3 )
名前:いっち 日時:2010/10/17 15:27

私の知っている範囲で透過色の機能が無効になるのは以下のような状況です。 ・SetUseTransColor を FALSE に設定した状態で画像を読み込んだグラフィックハンドル ・DrawGraph等の TransFlag に FALSE を設定して描画したとき ・アルファチャンネル付の画像を読み込んだグラフィックハンドル ・アルファチャンネル画像(ファイル名の末端に『_a』が付く画像)とセットで読み込んだグラフィックハンドル ・モデルのテクスチャとして読み込んだグラフィックハンドル ・MakeGraph や MakeScreen で動的に作成したグラフィックハンドル (CreateGraphFromMem や CreateGraphFromSoftImage で作成した場合は機能する模様 逆に LoadSoftImage では『_a』が付く画像が読み込まれない)

Page: 1 |