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