WPF画布中可见元素

3
我有一个WPF画布和许多形状(StreamGeometry / Path)添加到它上面。我定义了ScaleTransform以缩放到特定区域。
我已经放大了画布中的任意空间,并且形状已经被缩放。现在,是否可能获取在Canvas可见区域内的形状。
谢谢任何指针。
2个回答

2

这能帮到您吗?

遍历画布的所有子形状,并对于每个 myShape 检查以下内容...

     hitArea
       = new EllipseGeometry(
           new Point(Canvas.GetLeft(myShape), Canvas.GetTop(myShape)),
           1.0, 
           1.0); 

     VisualTreeHelper.HitTest(
          myShape, null,
          new HitTestResultCallback(HitTestCallback),
          new GeometryHitTestParameters(hitArea)); 

     public HitTestResultBehavior HitTestCallback(HitTestResult result)
     {
         if (result.VisualHit == myShape)
         {
              //// This shape is on the visible area.
         }
     }

1
谢谢回复。我一直在研究这个问题。如何获取画布的顶部和左侧?我已经将所有几何对象添加到画布中。我想,如果我可以获取画布的边界矩形,我就可以进行HitTest。double left = (double)canvas1.GetValue(Canvas.LeftProperty); double top = (double)canvas1.GetValue(Canvas.TopProperty);这给了我NaN。 - Sam
使用这个链接:http://social.msdn.microsoft.com/forums/en-US/wpf/thread/281a8cdd-69a9-4a4a-9fc3-c039119af8ed/ - WPF-it

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接