Обрезка элементов WPF на холсте - PullRequest
1 голос
/ 24 октября 2009

Я работаю над интерактивным графическим / древовидным инструментом WPF, и узлы и ссылки между ними размещены на холсте. Узлы - это пользовательские элементы управления, а ссылки - просто фигуры линий, и в настоящее время ссылки идут от центра узла к центру другого узла.

Проблема возникает, когда я хочу, чтобы узлы были слегка прозрачными, и каждый видит ссылки за узлами. Я подумал, что наиболее удобным решением было бы применить обрезку или маску непрозрачности к линиям, чтобы они не рисовались за узлами, но я не могу на всю жизнь понять, как?

По сути, я не могу определить геометрию ограничивающего прямоугольника из узлов, чтобы использовать ее в качестве геометрии обрезки для линий. Конечно, меня также интересуют альтернативные решения!

Ответы [ 3 ]

2 голосов
/ 15 ноября 2009

Кажется, что метод VisualTreeHelper.GetContentBounds () каждый раз возвращает значение Empty.

Альтернативное решение этой проблемы дано на

Соединение двух элементов холста WPF одной линией без использования якорей?

, который использует ограничительные рамки для поиска точек пересечения, чтобы нарисовать линии от / до.

1 голос
/ 24 октября 2009

Мне кажется, что вы обдумываете решение. Почему бы просто не изменить логику для ссылок, чтобы линии начинались / заканчивались на правильной стороне узла, а не начинались с центра ??? Вам нужно всего лишь сделать немного больше математики, чтобы выполнить это.

Тем не менее, чтобы получить ограничивающую рамку Visual, вы можете использовать вспомогательный метод VisualTreeHelper :: GetContentBounnds .

0 голосов
/ 11 июня 2012

Мы работали над чем-то похожим, и нашим решением было разместить ссылки и узлы на разных уровнях.

Таким образом, если вы хотите, чтобы узлы отображались над ссылками, а кончики ссылок скрывались узлами, вы просто изменяете z-порядок слоев, чтобы слой узлов находился перед слоем связей .

В качестве слоев мы использовали VisualHosts (здесь вы найдете класс VisualHost здесь ), а наши объекты узла и ссылки были DrawingVisuals.

Работает нормально, и вам не нужно беспокоиться о поиске границ ваших узлов и т. Д.

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