1

我正在开发一个交互式 WPF 图形/树工具,并将它们之间的节点和链接放置在画布中。节点是用户控件,链接只是线条形状,当前链接从一个节点的中心到另一个节点的中心。

当我希望节点稍微透明并且看到节点后面的链接时,就会出现问题。我认为最方便的解决方案是将剪辑或不透明蒙版应用于线条,因此它们不会被绘制在节点后面,但我无法为我的生活弄清楚如何?

基本上,我无法从节点中找出边界框几何形状,以用作线条的剪裁几何形状。当然,我也对替代解决方案感兴趣!

4

3 回答 3

2

VisualTreeHelper.GetContentBounds() 方法似乎每次都返回 Empty。

这个问题的另一种解决方案是在

通过一条线连接两个 WPF 画布元素,而不使用锚点?

它使用边界框来查找交点以绘制从/到的线。

于 2009-11-15T13:33:45.757 回答
1

在我看来,您似乎在考虑解决方案。为什么不只是更改链接的逻辑,使线在节点的正确一侧开始/结束,而不是从中心开始???你应该只需要做更多的数学来完成这个。

也就是说,要获取 Visual 的边界框,您可以使用VisualTreeHelper::GetContentBounnds辅助方法。

于 2009-10-24T18:50:00.400 回答
0

我们做了类似的事情,我们的解决方案是将链接和节点放在不同的层上。

因此,如果您希望节点出现在链接上方并且链接的尖端被节点隐藏,您只需更改层的 z 顺序,使节点层位于链接层的前面。

作为图层,我们使用了 VisualHosts(您可以在此处找到 VisualHost 类),我们的节点和链接对象是 DrawingVisuals。

工作正常,您无需费心寻找节点的边界等。

于 2012-06-11T09:10:47.540 回答