我有一个WPF Canvas并添加了很多Shapes(StreamGeometry / Path)。我定义了ScaleTransform以放大特定区域。
我已经放大了画布中的任意空间,并且缩放了形状。现在,是否可以获取画布可见区域中的形状。
感谢您的任何指示。
答案 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.
}
}