我有一个4x8矩阵。
{
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
}
如果我输入“10111101”,那么该过程应该是:
{
1,0,0,0,0,0,0,0
1,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
1,0,0,0,0,0,0,0
}
then
{
1,1,0,0,0,0,0,0
0,1,0,0,0,0,0,0
1,0,0,0,0,0,0,0
1,1,0,0,0,0,0,0
}
then
{
0,1,1,0,0,0,0,0
0,0,1,0,0,0,0,0
0,1,0,0,0,0,0,0
0,1,1,0,0,0,0,0
}
then
{
0,0,1,1,0,0,0,0
0,0,0,1,0,0,0,0
0,0,1,0,0,0,0,0
0,0,1,1,0,0,0,0
}
{
0,0,0,1,1,0,0,0
0,0,0,0,1,0,0,0
0,0,0,1,0,0,0,0
0,0,0,1,1,0,0,0
}
这将是最后一次。完成所有列后,它将重新开始。
我实际上有一个ovals形状的矩阵(4x8)。我使用了List<>并且所有控件都在shapecontainer中。我想在找到1时改变颜色。这部分我可以做,但我想不出如何在矩阵中移动1,0。
我怎么能这样做?
这是我的代码:
int k = 0;
for (int i = 0; i < stringLength; i++)
{
if(toto[i].ToString()=="1")
{
ovalShape[k].FillColor = Color.Red;
k = k + 1;
}
else if (toto[i].ToString() == "0")
{
ovalShape[k].FillColor = Color.LawnGreen;
k = k + 1;
}
else
{
k = k+1-1;
}
}
答案 0 :(得分:1)
为什么不使用变量来确定首先显示哪个列? (我在这里使用firstColumn) (未测试)
void ChangeArrayDisplay(int firstColumn) //Any column can be first, from 0 to 7
{
int k = 0;
for (int i = firstColumn * 4; i < stringLength; i++)
{
changeOvalColor(k, toto[i]);
k++;
}
for (int i = 0; i < firstColumn * 4; i++)
{
changeOvalColor(k, toto[i]);
k++;
}
}
void ChangeOvalColor(int index, int colorValue)
{
if(colorValue == 0)
ovalShape[index].FillColor = Color.Red;
else
ovalShape[index].FillColor = Color.LawnGreen;
}
我还对您的代码进行了一些更改。
您应该知道k = k + 1;
等同于k++;
修改强> 问题已经改变,但我仍然在这里使用你的8x4格式。您可以更改代码以适应您的新情况。