2013-03-01 38 views
1

如果我想在Canvas中移动一个矩形,我需要修改Top和Left属性吗?那是我看到它的唯一方法。我正在制作一个基于瓦片的游戏,我想要移动的矩形充满了敌人和我的英雄的图像。如何在Canvas中移动矩形?

+1

附加属性Canvas.Left和Canvas.Top编辑:http://stackoverflow.com/questions/5913792/wpf-canvas-how-to-add-children-dynamically-with-mvvm-code-behind – kenny 2013-03-01 15:51:19

回答

1

您也可以在矩形上使用RenderTransform。

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Canvas> 
     <Rectangle Width="10" Height="10" Fill="Red"> 
      <Rectangle.RenderTransform> 
       <TranslateTransform X="10" Y="10"/> 
      </Rectangle.RenderTransform> 
     </Rectangle> 
    </Canvas> 
</Window> 
1

如果您的游戏基于拼贴,通常您不会移动拼贴。你将有一个固定的网格,你只需要移动内容。例如想象一下棋盘。当一块从方形A1移动到A7时,您不会将拼块A1移动到A7,而是将拼块A1中的拼块移动到拼块A7。即使你的瓷砖地图是可卷动的,你也会想要移动容纳瓷砖的栅格而不是单个瓷砖。

您可以使用WPF Grid控件执行此任务,该控件允许您定义行数和列数,并且可以在每个网格单元格内放置图像控件。然后,每个图像源可以绑定到模型的各个图块。