1

作成中のタイル ベースのゲームで、特定のタイルの上に画像を配置したいと考えています。問題は、ランダム マップを生成するときに、Canvas の Rectangle の子が描画されるときに、Image の上に描画されることです。ウィンドウの外側のグリッドのイメージ部分を作成することで、この問題を解決しました。問題は、キャンバス内の特定の長方形に画像を配置したい場合、グリッドがキャンバスよりも大きいため、座標がオフになることです。制限としてのグリッドの境界ではなく、画像の余白をキャンバス (制限としてのキャンバスの境界) のみに制限するにはどうすればよいですか?

たとえば、Image に Margin.Left = 50 の値を指定すると、キャンバス内の最適な場所に配置されますが、スケールが大きいため、グリッド内の別の場所に配置されます。

// Image displays, but does not display when I add child Rectangles to the Canvas
<Canvas Height="700" HorizontalAlignment="Left" Name="canvas1" VerticalAlignment="Top" Width="700">
        <Image Name="heroImage" Stretch="Fill" Source="hero.png" Height="74" Canvas.Left="558" Canvas.Top="602" />
</Canvas>



<Grid>
    <Canvas Height="700" HorizontalAlignment="Left" Name="canvas1" VerticalAlignment="Top" Width="700">
        // Removed the Image
    </Canvas>

    // Placed the Image outside the Canvas, but now it will draw according to the Grid's Margin limits and not the Canvas Margin limits
    <Image Name="heroImage" Stretch="Fill" Source="hero.png" Height="74" Canvas.Left="558" Canvas.Top="602" />
</Grid>

キャンバス内の画像の位置 完璧に配置されたキャンバス内の画像

グリッド内のキャンバス外の画像位置 Canvas Margin 座標を使用したため、グリッド内の画像が間違って配置されました

4

2 に答える 2

1

最初の方法は良かったです。Canvas.Left...を実行するには、画像をCanvasの子にする必要があります。

問題を解決するために、ZIndexを使用して、他のすべての長方形の上に画像を配置できますか?

Canvas.ZIndex="3 or whatever"

値2の画像は、値1の長方形の上に描画されます。したがって、大きな数値をpuすることができます。

于 2013-03-04T19:20:28.133 に答える
1

Canvas 内で画像を使用できると思います。Rectangle の上に画像が必要な場合は、画像の (Palen.ZIndex または Canvas.ZIndex) プロパティを Rectangles よりも大きく設定する必要があります。例えば:

<Canvas Height="700" HorizontalAlignment="Left" Name="canvas1" VerticalAlignment="Top" Width="700">
        <Image Name="heroImage" Stretch="Fill" Source="hero.png" Height="74" Canvas.Left="558" Canvas.Top="602" Canvas.ZIndex="1000" />
        <Rectangle x:Name="Some Rectangle" Canvas.ZIndex="1"/>
</Canvas>

長方形の上に画像が表示されます。これが解決策だと思います。キャンバスの原因から画像を配置すると、必要な正確な位置を設定するのが非常に複雑になります。

于 2013-03-04T19:25:58.780 に答える