第一篇文章。基本上我正在尝试创建一个基于Winforms中的数组的Map网格。虽然我失败了。这是我到目前为止得到的
问题是它把所有的东西都显示成一种颜色。而我想让它是基于数组的某种颜色。
我认为问题在于for循环中的foreach循环,因为foreach循环在第二个for循环中,它可能会对每个i重复,然后对每个j重复。
但是我太笨了,不知道如何排序。我知道winforms不适合这个,我真的不想重做代码,我只是有点想让这个工作,如果可能的话。
命名空间Test {公共分部类Form 1:表格{ int TILE_SIZE = 64;图10 - 11示出了根据本发明的一个实施例的一种方法的流程图。图10 - 15中的“最大值”列表项= new List();
int[] mapGrid =
{
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
public Form1()
{
InitializeComponent();
newTest();
}
private void newTest()
{
for (var i = 0; i < MAP_NUM_ROWS; i++) //
{
for (var j = 0; j < MAP_NUM_COLS; j++)
{
PictureBox Walls = new PictureBox();
Walls.Location = new Point(i * TILE_SIZE, j * TILE_SIZE);
Walls.Height = TILE_SIZE;
Walls.Width = TILE_SIZE;
Walls.BorderStyle = BorderStyle.FixedSingle;
foreach (int test in mapGrid)
{
if (test == 0)
{
Walls.BackColor = Color.Red;
items.Add(Walls);
this.Controls.Add(Walls);
}
if (test == 1)
{
Walls.BackColor = Color.Orange;
items.Add(Walls);
this.Controls.Add(Walls);
}
}
}
}
}
}
}
enter image description here
我试过使用面板、Flowlayoutpanel和TableLayout面板。问题似乎是循环,我太累了,看不到解决方案。
1条答案
按热度按时间vwoqyblh1#
你不应该在主外循环内的网格上循环。你想
即,挑选出与您正在填充的行/列匹配的单元格