どんな絵を描いているのか判ったうえで描けということ | サンデープログラマーのC++/CLI

サンデープログラマーのC++/CLI

Cをちょっと知ってる程度からどこまでいけますか?

というわけでbmpファイルを大量に吐き出すプログラムを作ってるんだけど、これは別のプログラムに読み込ませる為に作成してるわけ。


ところがこれがせっかく作ったbmpファイルを読み込んでくれない。なんてこった。


ってことは、だ。パレット数が少ないとかなんとかってことがあるのか?


ということでファイルサイズを見てみると、手本のファイルが900MB位なのに対して1200MB位の出力してる。


はぁぁんなにごとー。えーちょっとまてよ。bitmapのsaveメソッドにそんな指定するところないぞ。imageformat見てもbmpとしか指定がないぞ。けええ。


ということで、ぐぐる。


http://asuka-diary.at.webry.info/200912/article_6.html


はーうっそー。どうやら欲しいのは24bitRGBのデータなのにアルファチャンネル付きの32bitしか出力しないの?しかも荒技が必要とかどういうことよ。



テクはないので仕方がない。32bit bmpで出力して別ソフトで変換だ。出来るからこれでもいいけど、糞PCなんで変換遅い遅い。やってらんないなぁ。。。。


ちょっと待てよ。しかしそんな不便なのありなのか?まっとうな方法がないわけがないだろう。


ということでさらに深く具ぐる具ぐる。



有った。。。。



http://msdn.microsoft.com/ja-jp/library/3z132tat.aspx


というか最初にbitmapをコンストラクトするときに PixelFormat を指定したらそのままbmpファイルになるんだ。えーまじか。


ペイントソフトとかでセーブするときにフォーマット指定するじゃん。あーゆーことできんわけ?


てことはナニか?そういうことしたかったらダミーのbitmapオブジェクトを作ってそこにコピーしてからセーブってか?はぁ。


てなわけで、

Bitmap bittomappu = gcnew(640,480, Sys(ryaku)::format24bpppRgb);

で解決。


描いてる絵がなんなのかちゃんと意識しろってこってすね。はいはい。