Quantcast
Channel: 午後わてんのブログ
Viewing all articles
Browse latest Browse all 420

WPFとVB.NET、エクセルのグループ化とグループ化解除を真似したい4

$
0
0
グループ化の続き
前回と前々回のを足して
グループ化したいThumbをマウスのドラッグで範囲選択してグループ化と解除
ここまでできた
イメージ 1
青枠はグループの枠でただの目印

回転角度と拡大率指定のスライダーはまだ動かせない、これができたらテストはほぼ終了なんだけどねえ

デザイン画面とXAML
イメージ 2


VBコード
イメージ 4
今回はコードの文字数がブログの上限を超えてしまったので画像だけ

グループ化の方法を少し変更した
前回は既存のグループと単体のThumbをグループ化するときは、既存のグループにThumbを足す形にしていたけど、別グループを新規作成してそこに既存のグループとThumbを入れるようにした
グループ1(t1, t2) + t3, t4のとき
前回 グループ1(t1, t2, t3, t4)
今回 グループ2(グループ1(t1, t2), t3, t4)
グループ化解除した時は今回のほうが自然な感じなんだけど、前回は気づかなくて余計なことをしていたw


グループの枠表示
グループに属しているThumbをクリックした時に、そのグループが収まる青枠を表示するようにした、目印用
イメージ 3
枠の表示にPathクラスとRectangleGeometryを使うのは前回の範囲選択の赤枠の表示と同じ方法、このPathはWakuって名前にした、586行目
枠の位置や大きさになるRectはBoundって名前にした、このBoundの値を変更するときに同時にWakuのDataも更新するようにした、598行目
この2つをGroup2に持たせた。
さっきのグループ化の方法変更でグループ直下のThumbリストは意味がなくなったので廃止、583行目

グループの枠の表示の切り替えタイミングは
選択Thumbを切り替えた時
グループ化した時
グループ化解除した時
この3つ
選択グループが変わった時ってことで
イメージ 5
ActiveGroupって名前のGroup2のプロパティを用意して(55行目)
この値を変更(Set)した時に枠の表示も切り替えることにした(60行目から)
今思った
枠を表示するときはCanvas.Children.Add
非表示にするときはCanvas.Children.Remove
っていう追加と削除で行っているけど
表示value.Waku.Visibility = Visibility.Visible
非表示value.Waku.Visibility = Visibility.Collapsed
文字通りこっちのほうがいいかも?


今回のコード全部は

関連記事
前々回
WPFとVB.NET、エクセルのグループ化とグループ化解除を真似したい3 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14187560.html
前回
WPFとVB.NET、マウスドラッグ移動で範囲選択、枠表示して枠内のものを取得 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14190065.html




Viewing all articles
Browse latest Browse all 420

Trending Articles