WPF画布中的可见元素

时间:2011-09-23 06:42:22

标签: wpf canvas visible shapes

我有一个WPF Canvas并添加了很多Shapes(StreamGeometry / Path)。我定义了ScaleTransform以放大特定区域。

我已经放大了画布中的任意空间,并且缩放了形状。现在,是否可以获取画布可见区域中的形状。

感谢您的任何指示。

2 个答案:

答案 0 :(得分:2)

您可以使用HitTest对Canvas的边界矩形执行命中测试。有关详细信息,请参阅Hit Testing in the Visual Layer并参阅hit testing with DrawingVisuals的示例。

答案 1 :(得分: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.
         }
     }