前提・実現したいこと
1.WPF上で出力した線をクリックの検出をスムーズに行いたい。
直接、線をクリックしても、反応しない部分がある。
クリックした位置の半径XXピクセル以内だと
線を選択したと判断することは可能であるか。
2.重なり部分があった場合、リストボックスで選択したい。
全く同じ線を重ねても、1番上の線しか情報を受け取りできない。
そもそもの実現方法などが間違っている可能性もあると思うのですが、
アドバイスをお願いできないでしょうか。
該当のソースコード
WPF
1private void uriPanel_click(object sender, MouseButtonEventArgs e) 2{ 3 if (e.Source is Polyline) { 4 MessageBox.Show(((Polyline)e.Source).Name); 5 ((Polyline)e.Source).Stroke = Brushes.Yellow; 6 ((Polyline)e.Source).StrokeThickness = 5; 7 } 8 if (e.Source is Path) 9 { 10 MessageBox.Show(((Path)e.Source).Name); 11 ((Path)e.Source).Stroke = Brushes.Yellow; 12 ((Path)e.Source).StrokeThickness = 5; 13 } 14 else 15 { 16 // 戻す 17 } 18}
WPF
1 2Polyline pMeat = new Polyline(); 3pMeat.Name = "meat"; 4pMeat.Points.Add(new Point(350, 500)); 5pMeat.Points.Add(new Point(450, 400)); 6pMeat.Points.Add(new Point(670, 300)); 7pMeat.Points.Add(new Point(750, 200)); 8 9pMeat.Stroke = Brushes.Red; 10pMeat.StrokeThickness = 1; 11pMeat.IsHitTestVisible = true; 12uriPanel.Children.Add(pMeat); 13 14 15 16Polyline pPan = new Polyline(); 17pPan.Name = "pan1"; 18pPan.Points.Add(new Point(150, 200)); 19pPan.Points.Add(new Point(450, 400)); 20pPan.Points.Add(new Point(670, 500)); 21pPan.Points.Add(new Point(850, 200)); 22 23pPan.Stroke = Brushes.Brown; 24pPan.StrokeThickness = 1; 25pPan.IsHitTestVisible = true; 26uriPanel.Children.Add(pPan); 27 28Polyline pPan2 = new Polyline(); 29pPan2.Name = "pan2"; 30pPan2.Points.Add(new Point(150, 200)); 31pPan2.Points.Add(new Point(450, 400)); 32pPan2.Points.Add(new Point(670, 500)); 33pPan2.Points.Add(new Point(850, 200)); 34 35pPan2.Stroke = Brushes.Brown; 36pPan2.StrokeThickness = 1; 37pPan2.IsHitTestVisible = true; 38uriPanel.Children.Add(pPan2); 39
試したこと
パネルのクリックイベントでイベントを受け取るようにしたが、
1番上に表示されている線の情報しか返ってこない。
補足情報(FW/ツールのバージョンなど)
WPF C# VisualStudio2010
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/21 15:42
2021/01/05 15:08