teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

詳細なコード内容の追記

2015/12/17 07:22

投稿

hoijiisan
hoijiisan

スコア8

title CHANGED
File without changes
body CHANGED
@@ -10,8 +10,10 @@
10
10
 
11
11
  ![イメージ説明](1e661bbb5259fb14412efabe13cdd225.png)
12
12
 
13
- 黄緑の部分は,ノードをきれいに並べたいがために現在はWrapPanelを使用ます.黄緑で囲われ部分をドラッグすると,2つのコントロールがまとめて動くような形にす.
13
+ 黄緑の部分は,ノードをきれいに並べたいがために,Gridの上にWrapPanelをしいたコントロールを作成,使用してす.
14
+ (Gridを使用しているのは,黄色のコントロールを2分割にしているためです)
15
+ 黄緑で囲われた部分をドラッグすると,2つのコントロールがまとめて動くような形にしたいです.
14
- しかし,Canvas上にWrapPanelを置き,その上に更にコントロールを置くことで,矢印の座標がうまくとれなくなりました.もちろんCanvasの間にPanelを入れたことが原因なのはわかっておりますが…
16
+ しかし,Canvas上にGrid-WrapPanelを置き,その上に更にコントロールを置くことで,矢印の座標がうまくとれなくなりました.もちろんCanvasの間にGrid-WrapPanelを入れたことが原因なのはわかっておりますが…
15
17
 
16
18
  ・コントロール群をまとめて動かす
17
19
  ・矢印をコントロール毎に引く
@@ -19,4 +21,38 @@
19
21
  なお,パネル毎に矢印を引くというのは,このプログラムの利用文脈と異なるのでできればしたくないです.
20
22
 
21
23
  文章がわかりにくくてすみません.
22
- ご教授お願いいたします.
24
+ ご教授お願いいたします.
25
+
26
+ ==追記==
27
+ ご指摘ありがとうございます.
28
+ 座標は以下のように取得しています
29
+
30
+ 1. Canvas/Controlの時
31
+
32
+ Point startPoint = this.TranslatePoint(new Point(0, 0), this.grid1); //始点
33
+ Point endPoint = this.TranslatePoint(new Point(0, 0), this.grid1); //終点
34
+
35
+ //コントロールをキャンバスにセット
36
+ Canvas.SetLeft(Control1, 100);
37
+ Canvas.SetTop(Control1, 100);
38
+ Canvas.SetLeft(Control2, 200);
39
+ Canvas.SetTop(Control2, 200); //座標は適当です
40
+
41
+ //矢印の始点・終点のセット
42
+ startPoint.X = Canvas.GetLeft(Control1);
43
+ startPoint.Y = Canvas.GetTop(Control1);
44
+ endPoint.X = Canvas.GetLeft(Control2);
45
+ endPoint.Y = Canvas.GetTop(Control2);
46
+
47
+ 2. Canvas/WrapPanel/Controlの時
48
+
49
+ Gridの上にWrappanelを置き,黄色のControlを置く場所(ControlArea)を用意しています.
50
+
51
+ startPoint.X = Canvas.GetLeft(WrapPanel.ControlArea);
52
+ startPoint.Y = Canvas.GetTop(WrapPanel.ControlArea);
53
+ ・・・
54
+
55
+ のように書きたいです.
56
+ ビルドはできますが,生成時矢印は表示されません.
57
+
58
+ よろしくお願いします.