- 締切済み
線をオブジェクトとして選択するアルゴリズムについて。
線とか、丸とかを描くグラフィック関係のソフトを作りたいのですが、 wordの図形描画の機能みたいに、ある線分をクリックすることでその線分がアクティブになって、移動をしたり、長さを変えるといったようなことをプログラムで作ろうとしたら、どのようなアルゴリズムを組んだらよいのでしょうか? ちなみに、言語はVC++とVBを使うことができます。 簡単な考え方でもよいですし、どちらかの言語のプログラムを書いていただいても結構なので、どなたかお答えよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yogoroza
- ベストアンサー率13% (4/29)
>..プログラムの管理するオブジェクトの入れ物に点や、線のオブジェクトを放り込むというのが... これが先の人が書いてるコンテナオブジェクトだったりVBならコレクションオブジェクトになります こういった入れ物オブジェクトは あらかじめオブジェクトの追加削除、格納されたすべてのオブジェクトや、特定のオブジェクトにアクセスする機能を備えていますのでらくちんです >..とすると、こういったプログラムの場合、動的確保でオブジェクトを作っていった方がいいのでしょうか? .. (^^; クラスからのインスタンスの生成法と破棄の方法を調べてみてください。いらなくなったらちゃんとオブジェクトを破棄することがとっても大事です! イベント駆動のWinは例外処理まるけだから Cっぽくポインタとかリストとか使っちゃだめ! (><)
VC++でかかれるのでしたら、ちょうどよいサンプルプログラムがVC++のマニュアルにありますよ。 scribbleというtutrialにあるサンプルです。 基本的には描画オブジェクトの基底クラスを作って、その派生クラスとしていろんなオブジェクトを定義していくわけです。 インスタンスの格納にはコンテナを使うでしょうね。 まあ、サンプルを見てください。
- yogoroza
- ベストアンサー率13% (4/29)
あープログラムを書くのはめんどっちーので考え方だけ(^^) まず、プログラムの管理するオブジェクトの入れ物(これもオブジェクトですが)を作ります で、そこに、点やら、線やら(線は最低2個の点を含みますが)のオブジェクトを放り込みます で、オブジェクトを指定しようとクリックした場合(あるいはマウスを重ねで判定するなら常時)そのポイント(X,Y)を各オブジェクトに渡して、オブジェクト自身にあたり判定をしてもらい、その後の動作も(再描画とか)オブジェクト自身にやってもらう というのでどうでしょうか? キーワードはクラスと継承、インターフェイス(^^) がんばってね
お礼
回答ありがとうございます。 大体の流れはすごく理解できました。 でも、プログラムの管理するオブジェクトの入れ物に点や、線のオブジェクトを放り込むというのが、まだ少し引っかかってしまってます…。 あと、少し話は変わるのですが、こういった線などのオブジェクトって、新しく作られたり、削除されたりと数が頻繁に変わりますよね? とすると、こういったプログラムの場合、動的確保でオブジェクトを作っていった方がいいのでしょうか? でも、そうすると配列で*a[10]とか先に作っておいて、それに対して動的確保するのか、はたまたリストでつなげていくのか、それともぜんぜん違う方法で作るのか、その辺りのやり方としてはどういった方法でやるのでしょうか?