自分成長記

休学をきっかけに始めたブログ 2010年3月に無事卒業。今後も自分の様子を書き続けます

ペイントツールを作ってみた

opencv_9

今まで「OpenCV」と「C++/CLI」の勉強を目的として
ペイントツールを製作してきたが、本日配布することができた。

製作に数はほぼ一ヶ月強になる。
後半は大学に戻り始めた時期だったこともあり、開発ペースが落ちていたと思う。

配布場所は、一番上の記事にリンクが貼られているが、こちらにも書いておく。
http://koniko2.web.fc2.com/

説明等はリンク先にもあるのだが
一つ注意して欲しいことがあるので、ここでもふれておく。

このツールは「.NET Framework」を使用しているので
これが動作する環境でないと、動かすことができない。
動かすには「Microsoft」のサイトに行って
「.NET Framework」をダウンロード及びインストールを行う必要がある。

感想・疑問・不具合等あれば、コメントをよろしくお願いします。


これ以降はこのツール製作の感想などを書いていきたいと思う。

初めてのツール製作ということもあり
やはり今まで行ってきたようなゲーム製作とは違った大変さがあったと思う。
ゲーム製作ではどうしたら楽しくなるのかということを主に考えてきたのだが
今回のツール製作では、使い勝手を良くすることをできるだけ考えていた。

プログラムの関しては
僕が思っていた以上に時間もかかり、何度も諦めかける程の大変さがあった。
こうして配布まで辿り着く事ができて、非常に嬉しく頑張って良かったって思った。

ペイントツールの製作を行って
ツール自体の作り方というものを学ぶことができた。
配布を意識した製作だったので、バージョン情報やアイコン作成等
個人的に作る時には手をつけないであろう部分の製作まで行うことになったので
それだけ勉強になったし、達成感も強く感じることができた。

テーマ:日記 - ジャンル:日記

ペイントツール | コメント:2 | トラックバック:0 |

「C++/CLI」と「OpenCV」 その8

opencv_8

この記事はプログラミングの勉強メモ。
内容は「C++/CLI」と「OpenCV」。

久しぶりの更新となるが
暇があればちょくちょくプログラミングをしていた。

簡易版のペイントツールを作っているのだが
前回悩んでいた部分も無事に解決することができた。

で、進捗状況だが
プログラムに関しては、ほぼ完成した。

具体的には
画像を「開く」ことができるようになった。
ツールボックスで「鉛筆、ブラシ、色の選択、塗りつぶし」を選択できるようにした。
画像のサイズを変更できるようにした。
1段階前に「元に戻る」ことができるようになった。
上手く「塗りつぶし」できなかった部分の修正を行った。

前回分からなかった部分は、上手くサイズ変更ができなかった部分だ。
リサイズするときに、データを空にする動作をさせていなかったのが原因だった。

元に戻るやり方は、前もって画像データを用意しておいて逐次保存する方法をとった。
この部分に関してもそれなりに悩まされたが
動作の流れを整理して考えることで解決することができた。

塗りつぶしに関してはメニューバーも保存されてしまっていたのだが
メモリに一度保存して、それを描画することで解決することができた。


今、アイコンなどを製作している段階。
その後、動作環境のチェックを行ったら、配布する予定だ。

完成が見えてきたので、もうひと頑張りだ!

テーマ:日記 - ジャンル:日記

ペイントツール | コメント:1 | トラックバック:0 |

「C++/CLI」と「OpenCV」 その7

opencv_7

この記事はプログラミングの勉強メモ。
内容は「C++/CLI」と「OpenCV」。

今回は「ユーザインタフェース」の向上を行った。
具体的には
・ツールボックスとツールバーの表示/非表示の切り替え
・バージョン情報の表示
・カーソルの座標の表示
を行った。

もう少し使い勝手をよくしたら
アイコンなども自作していきたいなと思う。

テーマ:日記 - ジャンル:日記

ペイントツール | コメント:0 | トラックバック:0 |

「C++/CLI」と「OpenCV」 その6

opencv_6

この記事はプログラミングの勉強メモ。
内容は「C++/CLI」と「OpenCV」。

簡易版ペイントツールを作っているのだが
今回は「塗りつぶし」に関する部分を作っていた。

今回は前々回に比べてもかなり大変なものだった。

画像処理で利用できる「OpenCV」にも
「塗りつぶし」関する事はできないらしく。

まずは自分で塗りつぶすプログラムを書いてみた。

具体的には、クリックした場所に点を描画して
その場所を基準に上下左右に1ピクセルずらして点を描画する
という再帰的なプログラムをつくったのがだ

塗りつぶす場所が小さい場合は特に問題なかったのだが
大きくなると、スタックがオーバーフローしてしまい
エラーになってしまうという問題が発生した。

ネットで調べていくと
「Win32API」に塗りつぶしに使えるものがあることを知り
そちらで実装することにしたのだが

この部分がかなり厄介で、正直何度もあきらめかけた。

修正を加えては、起動して動作を確認する作業をずっと繰り返していた。

今さっきに、思い通りに動かすことができた。
自分で言うのもあれだが、自分自身よくやったと思う。

今回で
線が引けて、色も選択できて、塗りつぶしもできるようになったので
これで絵を描く基礎的な部分はできたと思う。

今回のシステムは「簡易版ペイントツール」ということだが
範囲を選択したりとかは、今のところ作るつもりはない。

あとは、使い勝手を良くするぐらいだと思われる。


以下、プログラムの内容に関するメモ

ブラシのハンドルを用意して
「Win32API」の「ExtFloodFill」で塗りつぶしを行い。
グラフィックオブジェクトのハンドルを用意して
「BitBlt」でグラフィックオブジェクトに転送し、表示させた。

テーマ:日記 - ジャンル:日記

ペイントツール | コメント:0 | トラックバック:0 |

「C++/CLI」と「OpenCV」 その5

opencv_5

この記事はプログラミングの勉強メモ。
内容は「C++/CLI」と「OpenCV」。

簡易版ペイントツールを作っているのだが
今回は「色」に関する部分を追加した。

具体的には
メニューバーから好きな色を取得できるようにした。
画面左側にツールバーを追加し「鉛筆」などを選択できるようにした。
左下で鉛筆の色を見て分かるようにした。

「塗りつぶし」とかもできるようにしたいなと思う。

今回は初めて作った部分が多かったが
そんなに悩ますに製作することができたと思う。

次回もこの調子で作れたらいいと思った。

テーマ:日記 - ジャンル:日記

ペイントツール | コメント:0 | トラックバック:0 |
| HOME |NEXT