3. 具有翻轉和旋轉之圖形編輯系統
namespace Q3
{
public partial class Form1 : Form
{
Panel[,] plast = new Panel[4, 4];
Panel[,] pcurrent = new Panel[4, 4];
public Form1()
{
InitializeComponent();
for (int i = 0; i < 16; i++)
{
var p = new Panel();
p.Size = new Size(60, 60);
plast[i / 4, i % 4] = p;
p.Margin = new Padding(0);
last.Controls.Add(p);
p = new Panel();
p.Size = new Size(60, 60);
pcurrent[i / 4, i % 4] = p;
p.Margin = new Padding(0);
current.Controls.Add(p);
}
button1_Click(null, null);
}
void update()
{
for (int i = 0; i < 16; i++)
{
plast[i / 4, i % 4].BackColor = pcurrent[i / 4, i % 4].BackColor;
}
for (int i = 0; i < 16; i++)
{
pcurrent[i / 4, i % 4].BackColor = colors[i / 4, i % 4];
}
}
Color[,] colors = new Color[4, 4];
private void button5_Click(object sender, EventArgs e)
{
Close();
}
private void button1_Click(object sender, EventArgs e)
{
var random = new Random();
for (int i = 0; i < 16; i++) colors[i / 4, i % 4] = Color.FromArgb(
(int)random.NextInt64(256),
(int)random.NextInt64(256),
(int)random.NextInt64(256));
update();
}
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
var tmp = colors[i, 3];
colors[i, 3] = colors[i, 0];
colors[i, 0] = tmp;
tmp = colors[i, 2];
colors[i, 2] = colors[i, 1];
colors[i, 1] = tmp;
}
update();
}
private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
var tmp = colors[3, i];
colors[3, i] = colors[0, i];
colors[0, i] = tmp;
tmp = colors[2, i];
colors[2, i] = colors[1, i];
colors[1, i] = tmp;
}
update();
}
// 1,2,3
// 4,5,6
// 7,8,9
// 7,4,1
// 8,5,2
// 9,6,3
// 0,0 -> 0,2
//
private void button3_Click(object sender, EventArgs e)
{
Color[,] tmp = new Color[4, 4];
for (int i = 0; i < 16; i++)
{
tmp[i % 4, 3 - i / 4] = colors[i / 4, i % 4];
}
colors = tmp;
update();
}
private void button6_Click(object sender, EventArgs e)
{
Color[,] tmp = new Color[4, 4];
for (int i = 0; i < 16; i++)
{
tmp[3 - i / 4, i % 4] = colors[i % 4, i / 4];
}
colors = tmp;
update();
}
}
}
Last updated