ピクチャボックスにTGAファイルを描画するには

[戻る]
Air 2004/10/21(木) 23:52:15
はじめまして、Air と申します。
開発環境は、Windows XP, VC++6.0 MFC です。

ただいま作っているプログラムで
ピクチャボックスにα付きTGAファイルの画像を描画しようと思っています。
TGAファイルのフォーマットまでは調べたのですが
そこからどのようにすればよいか迷っています。

漠然とした質問で恐縮ではありますが
良きアドバイスを頂けますでしょうか?
よろしくお願いいたします。

PATIO 2004/10/22(金) 15:15:49
TGAのフォーマットをBitmapに展開してくれるライブラリでも
あれば話が早いでしょうが、そういうライブラリが無いのであれば、
自前でファイルを読み込んでBitmap形式に展開しなくては駄目だと思います。
ファイルに格納されている画像データが圧縮されていれば、それを展開する
必要もあります。いずれにせよ、TGAのフォーマットを把握する以外に
色々な知識が要求されると思います。
少なくとも格納されているデータが非圧縮だったとして、その画像データを
Bitmapに展開できる程度の知識は必要でしょう。
ですから、Bitmapの構造についても理解していないと無理ですね。
その上で圧縮の展開方法に関する知識がいるでしょうし、
αブレンドするならそちらの知識も必要になると思います。
ライブラリが無い状態であれば、かなり泥臭い作業になると思います。

Airさんのプログラミングの経験とか知識がどの程度あるのかわかりかねますが、
ここに書き込んだ内容を読んである程度は処理の検討くらいはつかないと
道のりは厳しいと思います。

シャノン 2004/10/22(金) 16:36:56
> TGAのフォーマットをBitmapに展開してくれるライブラリ
Susie プラグインがあるようです。
「IFTGA」でぐぐってみてください。

ただし、Susie プラグインは 24bit DIB を返すのが一般的なようですので、
アルファブレンドまではしてくれないと思います(してくれるプラグインがないとは言
い切れませんが)。

Air 2004/10/22(金) 17:40:36
PATIOさん、シャノンさん > ご意見ありがとうございます。

このTGAファイルは実質的な使い方はテクスチャにと考えています。
ピクチャボックスに表示するのは、テクスチャのリストみたいな物を
ユーザーに見せたいと考えてのことです。
なので、読み込み等はできれば自前でいきたいわけで、というか
いかなければいけないのですが。。。

とすると、実質的な作業は

TGAファイルを読み込む
  ↓
メモリ上にビットマップを作成しそこに展開 (この時α値は無視になるんでしょうか?)
  ↓
そのビットマップをピクチャボックスに描画

ということになるんですかね。
いずれにせよ、ビットマップの知識は必須ですね。

まだまだ苦戦しそうなので、いろんな意見をお聞かせいただけると助かります。
よろしくお願いします。

シャノン 2004/10/22(金) 18:39:00
Susie プラグインがどのようなものだとお考えかは存じませんが、
α値のことを抜きにして考えるならば、

> TGAファイルを読み込む
>   ↓
> メモリ上にビットマップを作成しそこに展開 (この時α値は無視になるんでしょう
か?)
>   ↓
> そのビットマップをピクチャボックスに描画

このどこに支障をきたすのかわかりません。問題ないように思えますが。

で、

> メモリ上にビットマップを作成しそこに展開 (この時α値は無視になるんでしょう
か?)

これですが、ビットマップもα値を持つことはできます。
BITMAPV4HEADER 以降のバージョンのビットマップを使ってください。

α値を正常に認識して V4HEADER を返してくれる Susie プラグインというのも、相当レ
アな気がしますが。
#そういう Susie プラグインを探して使うことにこだわっているわけではありません

Air 2004/10/22(金) 19:04:21
シャノンさん >
 す、すいません、何か無視したみたいになってしまって。
 不快な思いをされたなら、心底お詫び申し上げます。

「IFTGA」で検索してみましたところ、数件ヒットいたしました。
ただ、私がプラグインというものを使用した事がないので
どういうものかあまり理解しておりません。
これをプログラム上で使うというのはどういうことなのでしょうか?
( ソースを抜き出して組み込むということですか? )
その辺りを詳しく教えていただけるとありがたいです。

失礼な事をした上での質問で恐縮ですが
よろしくお願いいたします。

シャノン 2004/10/23(土) 13:57:22
お気になさらずに。気分を害したわけではありません。
むしろ、これから俺が言うことで Air さんが気分を害されないかとヒヤヒヤ。

IFTGA でぐぐると、こんなページ
http://hp.vector.co.jp/authors/VA014406/
見つかるかと思いますが、ここの VC++ から Susie プラグインを使うサンプルがありま
す。
といってもこれは高度にクラス化されたものですので、もっと基本的な使い方を知りた
い場合は、LoadLibrary / GetProcAddress について調べてみてください。

で。
Susie プラグイン Susie プラグインとしつこく言っておきながら、α値まで正常に扱っ
てくれるプラグインがあるかどうかは疑問であります。

Air 2004/10/24(日) 00:15:33
[[解決]]
ご返答ありがとうございます。

早速このサンプルソースを見てみようと思います。
更に質問が発生した場合は、また改めて書き込ませていただきますので
その折は、よろしくお願いします。

本当にありがとうございました。

古いスレッドには追加発言できません。