一、获取某个元素相对另一元素的相对位置

1、使用TransformToVisual获取某个元素相对于另外一个元素的偏移量。

例如:要获得rect相对于LayoutRoot的偏移量,就将LayoutRoot作为参数传进去,然后针对0,0这个点做一个transform:

Point translate = this.rect.TransformToVisual(this.LayoutRoot).Transform(new Point(, ));

之后就可以在e.ManipulationOrigin的基础上加上这个偏移量了:

x += translate.X;
y += translate.Y;

在更高级一点的场合中,你还可以将TransformToVisual的结果转换成一个MatrixTransform,从而获得变换矩阵。

请参考http://msdn.microsoft.com/en-us/library/system.windows.uielement.transformtovisual(v=VS.95).aspx

05-11 19:53