在WPF中绘制平铺贴图的最简单方法

本文关键字:最简单 方法 WPF 绘制 | 更新日期: 2023-09-27 18:29:00

在我的"游戏"中,我会画一个小地图(即10x10个字段)。每个字段将代表一堵墙或一块地。根据这个问题的答案,瓷砖将是PNG图像或简单的彩色填充矩形。

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

我的想法:

  • Canvas+将多个Rectangle放置为子级
  • 位图由引擎渲染,由GUI显示
  • 外部图书馆

在WPF中绘制平铺贴图的最简单方法

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

"绘制"某些内容的最佳方法是从现有的WPF元素中生成映射。例如,您可以使用GridUniformGrid,甚至Canvas来布置内容。可以通过编程将Image s和Rectangle s添加到地图中,而无需担心任何绘图代码。

这里有一个例子:

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来布局TextBlocks、Lines和Buttons。它既高效又简单,比我预期的要多得多。

我想说,如果UI很简单,并且您希望易于编程,那么可以使用VS或Blend中的XMAL内置设计器来绘制UI。其他选项是使用DirectX或OpenGL,后者功能强大得多,但学习曲线陡峭。