所以我有几个Rectangle
对象,我在画布 Manipulation Delta 事件中应用了平移和缩放。
private void RectCanvas_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
CurrentTransform.TranslateX += e.DeltaManipulation.Translation.X;
CurrentTransform.TranslateY += e.DeltaManipulation.Translation.Y;
CurrentTransform.ScaleX *= e.DeltaManipulation.Scale.X;
CurrentTransform.ScaleY *= e.DeltaManipulation.Scale.X;
}
然后我尝试使用来获取Rectangle
对象相对于画布的位置
public Point GetPosition()
{
//Set the GeneralTransform to get the position of rect on canvas
GeneralTransform = RectCanvas.TransformToVisual(Rect);
var rectPosition = GeneralTransform.Transform(new Point(0, 0));
rectPosition = new Point(Math.Abs(rectPosition.X), Math.Abs(rectPosition.Y));
return rectPosition;
}
问题是当我对其中一个矩形执行缩放时,它的位置似乎相对于未缩放的矩形发生了变化,即使两者在视觉上都位于同一位置(见图)。
缩放的红色矩形返回 Point(10,24),而较小的橙色矩形返回 Point(20,48)。不是TransformToVisual
返回左上角吗?
我错过了什么?