在我的“游戏”中,我将绘制一张小地图(即10x10字段)。每个区域代表一个墙或地面。根据此问题的答案,图块将是PNG图像或简单的颜色填充矩形。
在WPF中绘制此类地图的最佳推荐方法是什么?我希望它尽可能简单,因为这个项目的GUI部分不是很重要,我只是希望它显示在窗口的中心。
我的想法:
Canvas
+将多个Rectangle
作为孩子放置答案 0 :(得分:5)
WPF并不像Windows Forms那样倾向于绘图。 WPF更注重内容。
“绘制”某事的最佳方法是使用现有的WPF元素生成地图。例如,您可以使用Grid
或UniformGrid
,甚至是Canvas
来布置您的内容。您可以通过编程方式将Image
和Rectangle
添加到地图中,而无需担心任何绘图代码。
以下是一个例子:
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
和Button
s。它高效而简单,远远超出我的预期。
答案 1 :(得分:0)
我想说如果UI很简单并且您正在寻找易于编程的XAML,您可以使用VS或Blend中的XMAL内置设计器来绘制UI。其他选项是使用DirectX或OpenGL,它更强大,但学习曲线陡峭。