Google

2007年9月20日木曜日

画像読み込みの作成

さて、次なる機能として
BMP以外にもPNG・JPG・GIFファイルを読み込めるようにしてみよう、という事をしてました。

BMPしか読めないというのも、サイズ的な見地からちょっとよろしくは無いわけでして
例えばアドエスの解像度全開サイズ(480×800)の32ビットBMPファイルを作ってみると、
画像1つで1.4MBとかいっちゃうわけで、
携帯端末でそんな、アフォですかとかいわれちゃうわけで、
そんなわけで、他のファイル形式も読めるようにしなくては~なわけです。

んで、参考ページ見るに、SHLoadImageFile関数を使えば読み込める、という事なので
ふふん楽勝じゃん、てな感じで入れ込んで見たけども・・・ひっかかった。

コンパイルエラー発生、参考しても見つかりませんでした・・・てな感じの。
ちょっと調べて、あぁ、#include <aygshell.h>が必要なのか・・・で入れてみたら、
今度はコンパイルは通ったみたいだけど、リンクエラー発生。
え~、ファイル無いの?とか思って検索掛けてみたけど、ふつーにファイルあるし、パス通って無いのかとか色々試してみたけど、うまくいかず。
で、散々ググったりなんだり色々参考ページとかソースとか巡っているうちに、MFCのファイルだっけかstdafx.hとかあたりに記述っぽいのが。

結局#include <aygshell.h>の次の行に
#pragma comment(lib, "aygshell.lib")
と書く事で、ビルドできるように。

なんだろうねこれ。よくわかんない辺りまだまだプログラマとして日が浅いなぁと思うのでした(苦笑)。

何はともあれ、コレでさっきの関数が使えるようになってPNGファイルとか読み込めるようになったので、表示周りを色々試して見ましたが、ちと微妙に不都合と言うか
PNGファイル読込での半透明表示だと、透過色設定とか透過PNGとか効かないんだな・・・という事が。
おそらくは読み込んで作成されるビットマップの形式によるものだと思われるんだけど、
コレも色々試したんだけどイマイチうまくいかないというか、結局画像四角全部が色に関係なく半透明して表示されるということに・・・。
単純な描画なら透過色を指定して、色抜き描画が出来てるんだけどねぇ・・・。
とりあえずは、BMPとそれ以外で使用する関数変えて、BMPだけはαチャンネルが表示に効くようにする形でやることにしようかな、と。

てな感じでBMP以外の画像ファイル読込の作成を行いました。
いやぁ、トライアンドエラーというか、初めての作成ってやっぱ大変だなぁ・・・。
まぁ、これもまた勉強ですが、が、が。

0 件のコメント: