サンデープログラマーのC++/CLI -5ページ目

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

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

あけましておめでとうござります。

たまたま正月に書いてるので挨拶してみました。



 私はYAHOOとかあまり使わないんだけど、YAHOO!知恵袋だけは結構使ってました。


 この手のQAに書き始めたのは、大昔教えてGooで専門知識をひけらかしてやろうと思ったのが最初だったんだけど、なんとなくYahoo知恵に書き始めてから何となくこっちを見るように。

 去年あたりからプロフィールからこのブログへリンク貼ってみたりしてたんだけど、なんとなくグレード画像をランクアップしてみたくなって頑張ってました。ちょっとだけ。


 んで、501件回答を超えて気分的に達成したんでなんとなく区切り的に知恵袋のことを書いてみたくなったわけ。


ベストアンサー 168件
ベストアンサー以外 266件
ベストアンサー率 39%
総数 434件
削除 0件


 俺の回答は多分半分くらい専門外回答で一割くらい適当で一割くらいが嘘。


 Yahoo!知恵袋くらいベストアンサーが頼りにならないサイトも無いよね。完璧な間違いを見つけて訂正してあげてもベストアンサー無いこと多いし。知恵袋マスターとか全くあてにならないから訂正して回ったこともあったなぁ。それでもGoogleからヒットした時に回答を参照することあるんだけどね。面白い物だ。


 ところで最近俺の回答に片っ端から評価してる人がいるっぽいんだけど、万一ここ読んでたらコメントしてね。いーこいーこするから。

 








といえば、ロック。ではなくてプログレスバー。の、逆襲。



以前がっつり諦めた プログレスバーなんだが、でっかいループをだらだら回してたらVS2008に怒られてしまったのできちんとつかってみようかと思ったわけで。


VS2008曰く、「何も表示せずに裏で回してるとハングしてるかと思うから駄目。」とのこと。


MSにそんな説教喰らうとは思わなかった。


てなわけで出来るもんかと思いつつ再挑戦。


あっさりプログレスバーが動き出す。呪文は次の通り。

 

this->Update();
Application::DoEvents();

eventを強制的に起こしてやれば目が覚めるんですかそうですか。前回はrefreshで出来るだろというか思ったんだろうか。なんつーかさぁ、昨日の話もそうだけど、もう少し自由に俺を理解して動けよな。相手は素人なんだから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);

で解決。


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