在WPF中绘制tile-map的最简单方法

时间:2012-03-26 16:32:32

标签: c# wpf

在我的“游戏”中,我将绘制一张小地图(即10x10字段)。每个区域代表一个墙或地面。根据此问题的答案,图块将是PNG图像或简单的颜色填充矩形。

在WPF中绘制此类地图的最佳推荐方法是什么?我希望它尽可能简单,因为这个项目的GUI部分不是很重要,我只是希望它显示在窗口的中心。

我的想法:

  • Canvas +将多个Rectangle作为孩子放置
  • 引擎呈现的位图,由GUI显示
  • 外部图书馆?

2 个答案:

答案 0 :(得分:5)

WPF并不像Windows Forms那样倾向于绘图。 WPF更注重内容。

“绘制”某事的最佳方法是使用现有的WPF元素生成地图。例如,您可以使用GridUniformGrid,甚至是Canvas来布置您的内容。您可以通过编程方式将ImageRectangle添加到地图中,而无需担心任何绘图代码。

以下是一个例子:

UniformGrid grid = new UniformGrid();
grid.Columns = 10;
grid.Rows = 10;
grid.Width = columnWidth * 10;
grid.Height = rowHeight * 10;
for (int x = 0; x < 10; x++)
{
    for (int y = 0; y < 10; y++)
    {
        if (fields[x, y] is SomeImage)
        {
            Image img = new Image();
            img.Source = someImageSource;
            grid.Children.Add(img);
        }
        else
        {
            Rectangle rect = new Rectangle();
            rect.Fill = someColor;
            grid.Children.Add(rect);
        }
    }
}
Canvas.SetLeft(grid, (canvas.Width - grid.Width) / 2);
Canvas.SetTop(grid, (canvas.Height - grid.Height) / 2);
canvas.Children.Add(grid);

您可能无法按原样使用它,但您可以填写缺失的部分。

我最近做了一个与此类似的项目,使用Canvas来布置TextBlock s,LineButton s。它高效而简单,远远超出我的预期。

答案 1 :(得分:0)

我想说如果UI很简单并且您正在寻找易于编程的XAML,您可以使用VS或Blend中的XMAL内置设计器来绘制UI。其他选项是使用DirectX或OpenGL,它更强大,但学习曲线陡峭。