目标
想象一下,我们有像这样的矩阵
a11 a12 a13
a21 a22 a23
a31 a32 a33
我想要做的是,从文本框值旋转这个矩阵,例如,如果我写 2 并按rotate,程序必须保留矩阵的两个对角线值(在本例中为 a11、a22、a33、a13、a31)并旋转 2顺时针方向其他值。所以结果必须像
a11 a32 a13
a23 a22 a21
a31 a12 a33
它必须适用于所有N x N
大小的矩阵,并且如您所见,每 4 次旋转将矩阵带入默认状态。
我做了什么
所以想法就是这样,我有两种形式。首先取矩阵的大小(1 个值,例如如果它是 5,它会生成 5x5 矩阵)。当我按下OK它时,它会生成像这样的第二种形式的文本框矩阵
表格 1 代码
private void button1_Click(object sender, EventArgs e)
{
int matrixSize;
matrixSize = int.Parse(textBox1.Text);
Form2 form2 = new Form2(matrixSize);
form2.Width = matrixSize * 50 + 100;
form2.Height = matrixSize *60 + 200;
form2.Show();
//this.Hide();
}
表单 2 代码从给定值生成文本框矩阵并将随机值放入此字段
public Form2(int matrSize)
{
int counter = 0;
InitializeComponent();
TextBox[] MatrixNodes = new TextBox[matrSize*matrSize];
Random r = new Random();
for (int i = 1; i <= matrSize; i++)
{
for (int j = 1; j <= matrSize; j++)
{
var tb = new TextBox();
int num = r.Next(1, 1000);
MatrixNodes[counter] = tb;
tb.Name = string.Format("Node_{0}{1}", i, j);
Debug.Write(string.Format("Node_{0}{1}", i, j));
tb.Text = num.ToString();
tb.Location = new Point(j * 50, i * 50);
tb.Width = 30;
tb.Visible = true;
this.splitContainer1.Panel2.Controls.Add(tb);
counter++;
}
}
}
表格 2 有 1 个文本框用于控制旋转(其他文本框以编程方式即时生成)。我想要做的是,当我输入旋转计数并按下Enter此文本框时,我想旋转文本框矩阵,如上所述。无法弄清楚该怎么做。