首页 文章

WPF画布中的可见元素

提问于
浏览
3

我有一个WPF画布和很多形状(StreamGeometry / Path)添加到它 . 我定义了ScaleTransform以放大特定区域 .

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

谢谢你的任何指示 .

2 回答

  • 2

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

  • 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.
             }
         }
    

相关问题