我有一個WPF畫布和很多形狀(StreamGeometry/Path)添加到它。我定義了ScaleTransform以放大特定區域。WPF畫布中的可見元素
我已經放大到畫布中的任意空間,並且形狀被縮放。現在,是否有可能獲得Canvas可見區域中的Shapes。
感謝您的指點。
我有一個WPF畫布和很多形狀(StreamGeometry/Path)添加到它。我定義了ScaleTransform以放大特定區域。WPF畫布中的可見元素
我已經放大到畫布中的任意空間,並且形狀被縮放。現在,是否有可能獲得Canvas可見區域中的Shapes。
感謝您的指點。
您可以使用HitTest對Canvas的邊界矩形執行命中測試。有關詳細信息,請參見Hit Testing in the Visual Layer,請參閱樣本hit testing with DrawingVisuals。
這應該有幫助嗎?
迭代直通所有兒童塑造帆布並檢查下列每個.... 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.
}
}
感謝您的答覆。我一直在讀這個。我如何獲得畫布的頂部和左側?我已將所有幾何對象添加到畫布。我在想如果我能得到畫布的邊界矩形,我可以做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/ –