2009-08-31 46 views
1

我具有正方形400×400與連接到它Silverlight中使用平面投影當轉換座標系統3

<Rectangle x:Name="Ground" Width="400" Height="400" Stroke="Black" VerticalAlignment="Bottom" Canvas.Left="60" Canvas.Top="50" > 
       <Rectangle.Fill> 
        <ImageBrush ImageSource="_images/grass.jpg"/> 
       </Rectangle.Fill> 
       <Rectangle.Projection> 
        <PlaneProjection x:Name="GroundPlaneProjection" CenterOfRotationZ="0" GlobalOffsetX="0" GlobalOffsetY="0" GlobalOffsetZ="0" LocalOffsetX="0" LocalOffsetY="0" LocalOffsetZ="0" RotationX="120" RotationY="-40" RotationZ="25"/> 
       </Rectangle.Projection> 
      </Rectangle> 

一個平面上的投影如何將確定的邊界的方變換以便對象置於其上會不會出界?

回答

1

通過在UIElement上使用TransformToVisual方法,可以在不同元素的座標空間之間進行轉換。這將爲您提供一個變換對象,您可以將它用於將一個元素的座標空間中的點轉換爲另一個元素的座標空間。

這應該可以幫助你實現你正在嘗試做的事情。

+0

感謝您的回覆。在發佈之前,我已經嘗試過這種方法,但我可能做錯了。 GeneralTransform transform = control.TransformToVisual(Ground); Point coordinates = transform.Transform(new Point(Ground.Margin.Left + Ground.Width,Ground.Margin.Top + Ground.Height));所以在理論上應該給我一個點在轉換後的Rectangle的右下角,但它不會。我想知道是否需要將矩形轉換爲包含矩形的畫布。我會試試看看。 – 2009-09-01 00:54:33

+0

如果你想得到相對於某個面板(比如「LayoutRoot」)的「Ground」的右下角,你應該這樣做: var transform = Ground.TransformToVisual(LayoutRoot); var point = transform.Transform(new Point(Ground.Width,Ground.Height); – KeithMahoney 2009-09-01 17:18:08

相關問題