在WPF中绘制平铺贴图的最简单方法
本文关键字:最简单 方法 WPF 绘制 | 更新日期: 2023-09-27 18:29:00
在我的"游戏"中,我会画一个小地图(即10x10个字段)。每个字段将代表一堵墙或一块地。根据这个问题的答案,瓷砖将是PNG图像或简单的彩色填充矩形。
在WPF中绘制此类地图的最佳推荐方法是什么?我希望它尽可能简单,因为这个项目的GUI部分不是很重要,我只希望它显示在窗口的中心。
我的想法:
Canvas
+将多个Rectangle
放置为子级- 位图由引擎渲染,由GUI显示
- 外部图书馆
WPF不像Windows窗体那样倾向于绘图。WPF更注重内容。
"绘制"某些内容的最佳方法是从现有的WPF元素中生成映射。例如,您可以使用Grid
或UniformGrid
,甚至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
来布局TextBlock
s、Line
s和Button
s。它既高效又简单,比我预期的要多得多。
我想说,如果UI很简单,并且您希望易于编程,那么可以使用VS或Blend中的XMAL内置设计器来绘制UI。其他选项是使用DirectX或OpenGL,后者功能强大得多,但学习曲线陡峭。