C#创建一个标有2d字符串数组的Label

时间:2014-03-19 21:00:19

标签: c# arrays 2d maze

我正在做一个应该填满屏幕的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中执行此操作

3 个答案:

答案 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.

enter image description here

答案 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的事件处理程序

没什么复杂的。

enter image description here

答案 2 :(得分:-1)

生成随机地图并将其保存在二维数组上后,循环选择地图的每个单元格(将其添加到标签中),并在每次到达行尾时添加一条新行。

另外,当您尝试使用2d数组映射填充标签时发生了什么?