我正试图在WPF中使用自上而下的2d平铺游戏获得基础知识,我有一种感觉,我认为它非常错误。我已经尝试了几种方法在屏幕上显示32x32 .png文件的平铺网格和小网格(例如16x16),它工作正常。如果我使用相同的图像向上移动到64x64网格,则内存消耗是巨大的。使用我目前最好的方法,它接近60MB,重绘它需要几秒钟。此外,重绘会将内存使用量增加20-30MB。我怎样才能更有效地做到这一点?请原谅我的代码;我可以想象它看起来很难看。
class Tile
{
public int Dimension
{
get { return Settings.Default.TileDimensions; }
}
public BitmapImage Image { get; set; }
public Point Location { get; set; }
}
for (int r = 0; r < Rows; r++)
{
for (int c = 0; c < Columns; c++)
{
var t = new Tile();
t.Image = new BitmapImage(new Uri("/AoW;component/Resources/Images/Grass.png", UriKind.Relative));
t.Location = new Point(c, r);
Tiles.Add(t);
}
}
<Canvas Width="{Binding CanvasWidth}"
Height="{Binding CanvasHeight}">
<ItemsControl ItemsSource="{Binding Current.Container.Map.Tiles,
Source={StaticResource Locator}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding Columns}"
Rows="{Binding Rows}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Width="{Binding Dimension}"
Height="{Binding Dimension}"
RenderOptions.BitmapScalingMode="LowQuality"
Source="{Binding Image}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
非常感谢任何有关如何正确执行此操作的建议。