titech-is-cs115 / techdraw

techdraw
0 stars 0 forks source link

ミッション1:グループ機能 #6

Open wakita opened 8 years ago

wakita commented 8 years ago

複数の図形をグループ化し,あたかもひとつの図形であるかのように操作できる機能

Miyazak5 commented 8 years ago

あいかつ 2:50 にこる チラ岡 けーや ちけん さぼり魔

Miyazak5 commented 8 years ago

3tty0n egashir5 ntaka19 Shota_Takahasi nagano5 nishiwa5 Miyazak5

wakita commented 8 years ago

Evernoteのメモをここに転載してくれませんか.

3tty0n commented 8 years ago

@wakita 現在、Evernoteのメモをブラッシュアップしたものを執筆しています。午前中にはここに投稿します。

3tty0n commented 8 years ago

グループ化とは

複数のオブジェクトを「あたかも1つの図形」であるかのように操作すること。

単体に対しての拡大縮小、複数に対しての拡大縮小、これを同じ操作で行う。

参考のため、Microsoft Office の Power Point における「グループ化」という機能の概要をここに転載する。

作業効率を上げるために、図形、図、他のオブジェクトをグループ化することができます。 グループ化を使用すると、単一の図形またはオブジェクトであってもすべての図形またオブジェクトを同時に反転、回転、移動、サイズ変更することができます。 たとえば、塗りつぶしの色を変更したり、影を追加したりして、グループ内のすべての図形の属性を一度に変更することもできます。 グループを 1 つのオブジェクトとしてグループに効果を適用することはできません。そのため、影などの効果は、グループ内のすべての図形またはオブジェクトに適用されますが、グループのアウトラインには適用されません。 図形をグループ化せずにグループ内の項目を選んで属性を適用することも、グループ内にグループを作成して複雑な図面を作成することもできます。

いつでも図形のグループをグループ解除し、その後でそれらを再グループ化することができます。

機能と実装

機能としては「選択」、「グルーピング」、「アングルーピング」を持たせる。

選択

選択には「長方形の描画によるオブジェクト選択」と「クリックによるオブジェクトの選択」の2パターンの機能を持たせてみたい。

選択ボタンに「長方形」「クリック」の2つを用意する。

長方形による選択

1.長方形を描画する

2.描画した長方形と衝突しているオブジェクトを拾う

クリックイベントによる選択

1.オブジェクトのクリック

2.クリックとダブルクリックの判定は?

脇田先生のサイトがヒットした。これが使えそうだ。

グルーピング

「リストに対する再帰的な処理」「新しいオブジェクトのnew」の2つの方法が考えられる。

リストの要素に対して再帰的に処理をする

1.全てのオブジェクトの中心の座標と各オブジェクトの相対的な距離を持っておく

2.全てのオブジェクトを含むような最小の長方形を持っておく

3.関数を受け取る引数を用意しておく

リストの要素を全て包含する新しいオブジェクトを new する

1.選択したすべてのオブジェクトの情報を受け取る

2.newしたものを描画する

アングルーピング

グルーピングの逆、つまりグループ化したものを元に戻す

グループ化の解除

1.グループ化の逆をする

リストにオブジェクトを格納する場合
オブジェクトをnewする場合

グループ化のクラスがあるのでは…?

気づいてしまった…javafx.scene.Groupクラスを使えばいいということに…

グループ化のクラスを用いれば、より強力なグループ化メソッドが作れるかもしれない

wakita commented 8 years ago

おぉ,scene.Group便利そうですね.それでいってください.Affine変換の結果とかが気になりますね.