C # / WPF: LineGeometry с вложенными элементами пользовательского интерфейса - PullRequest
1 голос
/ 04 декабря 2010

У меня проблемы с использованием LineGeometry для рисования пути между двумя простыми фигурами, вложенными в элементы canvas.

Вот краткое демонстрационное руководство, которое я собрал, чтобы продемонстрировать проблему:

MainWindow.xaml: http://pastebin.ca/2010012

MainWindow.xaml.cs: http://pastebin.ca/2010013

(я думал, что вставка кода облегчит жизнь всем, так как я очень плохо пытаюсьобъяснить вещи :))

В этой демонстрации я могу успешно нарисовать путь между прямоугольниками, вложенными в parentCanvas, но когда я пытаюсь использовать тот же метод для эллипсов, которые я вложил в отдельные элементы canvas (которые такжевложенный в parentCanvas) он, похоже, ничего не делает.

Причина, по которой я пытаюсь это сделать, заключается в том, что для моего реального приложения я пытаюсь визуализировать блоки (элементы холста) с несколькими точками соединения (отдельные эллипсы) поэтому мне нужно иметь возможность рисовать пути между этими эллипсами, которые распределены по разным блокам.Графическое представление этого будет выглядеть примерно так: http://img27.imageshack.us/img27/8255/blocksj0.png

Комментарии / предложения приветствуются.

Спасибо, Хамза.

1 Ответ

0 голосов
/ 05 декабря 2010

Ну, я нашел обходной путь, чтобы выполнить то, что я изначально пытался сделать. Вместо того, чтобы пытаться найти дочерний элемент Shape, вложенный в элементы Canvas, я просто вычисляю набор координат из позиции Shapes.

Этот фрагмент кода должен объяснить, как мне этого добиться:

lg.StartPoint = new Point((Canvas.GetLeft(canvasSrc) + canvasSrc.ActualWidth - 1), (Canvas.GetTop(canvasSrc) + Canvas.GetTop(rectangle5) + rectangle5.ActualHeight / 2));
lg.EndPoint = new Point((Canvas.GetLeft(canvasDest) + 1), (Canvas.GetTop(canvasSrc) + Canvas.GetTop(rectangle6) + rectangle6.ActualHeight / 2));

Публикация сообщения на случай, если кто-то найдет это полезным:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...