我正在做一个应该填满屏幕的c#迷宫
x x x x x x
x x x
x x x x x x
x x x x x x
x x x x x x
x x x x x x
x x x x x
x
x x x x x x
x是随机的位置,鼠标试图找到它的出路。我遇到麻烦的是找到一种用x填充内容的方法。我尝试创建一个充满x&x 39s的2D字符串数组并填充标签,但没有运气。
这样做的最佳方式是什么?使用面板或我可能不知道的东西? 我必须在WFA中执行此操作
答案 0 :(得分:0)
为了让您快速了解WPF中的绘图,我为您创建了一个小例子,直接将X绘制到窗口中。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Background = Brushes.Transparent;
}
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
var whitePen = new Pen();
whitePen.Brush = Brushes.White;
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
dc.DrawLine(whitePen, new Point(x*20, y*20), new Point(x*20 + 10, y*20+10));
dc.DrawLine(whitePen, new Point(x*20, y*20+10), new Point(x*20 + 10, y*20));
}
}
}
}
您可以在DrawLine调用周围添加if (positions[x, y] == 1)
之类的条件,以防止绘制特定的X.
答案 1 :(得分:0)
与我的其他答案相同,但使用Windows Forms :)它几乎相同。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
var blackPen = new Pen(Brushes.Black);
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
e.Graphics.DrawLine(blackPen, new Point(x*20, y*20), new Point(x*20 + 10, y*20+10));
e.Graphics.DrawLine(blackPen, new Point(x*20, y*20+10), new Point(x*20 + 10, y*20));
}
}
}
}
你必须在你的窗口中添加一个Panel(如果还没有,则将它命名为panel1)和Paint
的事件处理程序
没什么复杂的。
答案 2 :(得分:-1)
生成随机地图并将其保存在二维数组上后,循环选择地图的每个单元格(将其添加到标签中),并在每次到达行尾时添加一条新行。
另外,当您尝试使用2d数组映射填充标签时发生了什么?