2009-08-31 3 views
1

平面投影を使用する場合、私はそれのオブジェクトがその上に配置されているので、私は、形質転換された正方形の境界を決定する方法をシルバー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> 

に取り付けられた平面投影の正方形×400 400を有する座標系変換範囲外ではないでしょうか?

答えて

1

UIElementのTransformToVisualメソッドを使用すると、さまざまな要素の座標空間を変換できます。これは、ある要素の座標空間の点を別の要素の座標空間に変換するために使用できる変換オブジェクトを提供します。

これは、あなたがしようとしていることを達成するのに役立ちます。

+0

返信いただきありがとうございます。投稿する前にこれを無駄にしようとしましたが、やはり私は間違っているかもしれません。 GeneralTransform transform = control.TransformToVisual(Ground);ポイント座標= transform.Transform(new Point(Ground.Margin.Left + Ground.Width、Ground.Margin.Top + Ground.Height));理論的には、変換されたRectangleの右下隅にある点を私に与えるはずですが、そうではありません。私は矩形をキャンバスに変換する必要があるかどうか疑問に思います。私はこれを試して見ます。 –

+0

「Ground」の右下隅をいくつかのパネル(「LayoutRoot」など)に対して相対的に表示したい場合は、次のようにします。 var transform = Ground.TransformToVisual(LayoutRoot); var point = transform.Transform(new Point(Ground.Width、Ground.Height); – KeithMahoney

関連する問題