C#/ WPF:具有嵌套UI元素的LineGeometry

时间:2010-12-03 22:40:11

标签: c# wpf visual-studio visual-studio-2010

我在使用LineGeometry绘制嵌套在canvas元素中的两个简单形状之间的路径时遇到了问题。

这是一个快速演示,我已经把它们放在一起来演示这个问题:

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

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

(我认为粘贴代码会让每个人的生活更轻松,因为我在尝试解释事情方面非常糟糕:))

在这个演示中,我可以成功地绘制嵌套在parentCanvas中的矩形之间的路径,但是当我尝试使用相同的方法作为椭圆时,我已经嵌套在单独的画布元素中(也嵌套在parentCanvas中)它不会'好像什么都做。

我试图完成这个的原因是我的实际应用程序我试图用多个连接点(单个省略号)可视化块(画布元素)所以我需要能够在这些椭圆之间绘制路径不同的块。这种情况的图形表示如下:http://img27.imageshack.us/img27/8255/blocksj0.png

评论/建议表示赞赏。

谢谢, 哈姆扎。

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方法来完成我最初尝试做的事情。我不是试图找到嵌套在Canvas元素中的子Shape元素,而是简单地从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));

发布此信息以防其他人认为有用:)