« すべてを追加してメイク | メイン | BRender.axのインストール問題 »

2004年09月19日

ツール開発メモ:: 画像結合ツールの開発 その1

    

ヤフオクに出品するものの写真の結合をやりながら思う、面倒くせー。
これは明らかに自動化できる作業だ。
で、画像結合ツールを作ると思い立ち、作業に取りかかった。
今回はめずらしくGUIで作る。
いつもは、Perlとかでさっさとやってしまうのに。
まあ、気まぐれだ。
そして、C++Builderを起動してぺこぺこやる。
C++Builderはあまり慣れていないので、少々手こずるけど、GUIアプリを作るのはすごく楽だ。

とりあえず、DrawGridに画像をD&Dして結合するようなIFにしようと思い、DrawGridをいじる。
でも、エクスプローラーからファイルをD&D出来ない。
ドラッグ&ドロップ用のイベントを書いてもうまくできない。
セル同士のドラッグ&ドロップが出来るようになっただけだ。
調べてみると::DragAcceptFiles( Handle, TRUE );とやって、WM_DROPFILESメッセージを処理するようにしないといけないらしい。
メッセージ処理用メソッドを作るにはBEGIN_MESSAGE_MAPを使うらしい。
なんか、MFCみたいだ。
でも、調べてみると、このマクロは単にDispatchに展開されるだけのようだ。
マクロだとデバッグ時にいろいろと面倒なこともあるので、Dispatchは自分でオーバーライドすることにした。
そして、DragAcceptFilesにDrawGridのハンドルを渡しメイク。
カーソルが変わった。
D&D出来るようだ。
で、ドロップ。
・・・
WM_DROPFILESのハンドラに来ない。
なぜ?
って、DrawGridのDispatchにWM_DROPFILESハンドラを書かないといけないんじゃないか。
普通にメインのフォームのやつに書いていた。

DrawGridを継承するコンポーネントを作る。
きちんとWM_DROPFILESハンドラに来るようなった。
次に画像データの保持だが、面倒なのでvectorで10*10決め打ちで作ることにした。ま、ツールだしね。
std::vector > m_Cells; こんな感じ。
そして値初期化の時にm_Cells.reserve(10)とやって作る。当然2次元なので2次元目もreserveし、NULLで初期化。
画像はTJPEGImageで保持させた。
そして、メイクしてインストールしようとしたら、"パッケージ'vcljpg60'にもユニット'Jconsts'が含まれるためパッケージ'dclusr60'は読み込めません。"と出た。
なんだ、コンポーネントでTJPEGImageを使うのはまずいのか?
よくわからん。
じゃ、libjpegを使おうと言うことで、検索。
とりあえず、ここを参考にする。
他にも検索していて、GDI+と言う言葉が目に入った。
そうだ、GDI+を使った方が楽かも。
急遽ligjpegからGDI+に方向転換。
少し調査。

少し時間が空いて、今日。
Cマガを見るとちょうどGDI+の話題だった。
なんと間のいい。
とりあえず購入。



投稿者 Takenori : 2004年09月19日 10:09




comments powered by Disqus
Total : Today : Yesterday : なかのひと