Загрузка данных


using System.Drawing.Drawing2D;

namespace WinFormsApp5
{
    public partial class Form1 : Form
    {
        private string currentDrawing = "";

        public Form1()
        {
            InitializeComponent();
            button1.Click += buttonJapaneseFlag_Click; // Замените button1 на имя вашей кнопки "Японский флаг"
            pictureBox1.Paint += pictureBox1_Paint;

            // Делаем фон PictureBox белым, как у флага Японии
            pictureBox1.BackColor = Color.White;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }
        private void buttonJapaneseFlag_Click(object sender, EventArgs e)
        {
            currentDrawing = "Japan"; // Запоминаем выбор
            pictureBox1.Invalidate(); // Принудительно обновляем PictureBox, чтобы вызвалось событие Paint
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias; // Включаем сглаживание для кругов и линий

            int w = pictureBox1.Width;
            int h = pictureBox1.Height;

            switch (currentDrawing)
            {
                case "Japan":
                    // Диаметр круга — 60% от высоты
                    int diameter = (int)(h * 0.6);
                    int xJ = (w - diameter) / 2;
                    int yJ = (h - diameter) / 2;

                    using (Brush redBrush = new SolidBrush(Color.FromArgb(188, 0, 45)))
                    {
                        g.FillEllipse(redBrush, xJ, yJ, diameter, diameter);
                    }
                    break;

                case "Russia":
                    // Высота одной полосы (всего 3 равные полосы)
                    int stripH = h / 3;

                    // Белую полосу не рисуем, так как фон PictureBox уже белый
                    // Синяя полоса (посередине)
                    using (Brush blueBrush = new SolidBrush(Color.FromArgb(0, 57, 166)))
                    {
                        g.FillRectangle(blueBrush, 0, stripH, w, stripH);
                    }
                    // Красная полоса (снизу)
                    using (Brush redBrush = new SolidBrush(Color.FromArgb(213, 43, 30)))
                    {
                        g.FillRectangle(redBrush, 0, stripH * 2, w, h - (stripH * 2));
                    }
                    break;

                case "Czech":
                    // Нижняя красная половина флага
                    using (Brush redBrush = new SolidBrush(Color.FromArgb(211, 20, 41)))
                    {
                        g.FillRectangle(redBrush, 0, h / 2, w, h / 2);
                    }
                    // Синий треугольник слева (доходит ровно до середины ширины флага)
                    using (Brush blueBrush = new SolidBrush(Color.FromArgb(17, 69, 126)))
                    {
                        Point[] trianglePoints = {
                            new Point(0, 0),         // Левый верхний угол
                            new Point(w / 2, h / 2), // Центр холста
                            new Point(0, h)          // Левый нижний угол
                        };
                        g.FillPolygon(blueBrush, trianglePoints);
                    }
                    break;

                case "Olympic":
                    // Толщина колец и их диаметр адаптируются под размер холста
                    int ringSize = (int)(h * 0.35);
                    int thick = ringSize / 8; // Толщина линии кольца

                    using (Pen penBlue = new Pen(Color.FromArgb(0, 129, 200), thick))
                    using (Pen penBlack = new Pen(Color.Black, thick))
                    using (Pen penRed = new Pen(Color.FromArgb(238, 51, 78), thick))
                    using (Pen penYellow = new Pen(Color.FromArgb(244, 195, 0), thick))
                    using (Pen penGreen = new Pen(Color.FromArgb(0, 166, 81), thick))
                    {
                        // Шаг смещения колец по горизонтали и вертикали
                        int xStep = (int)(ringSize * 0.55);
                        int yStep = (int)(ringSize * 0.45);

                        // Стартовая точка для центрования всей композиции
                        int startX = (w - (ringSize * 3 + xStep * 2)) / 2 + (ringSize / 2);
                        int startY = (h - (ringSize + yStep)) / 2;

                        // Верхний ряд колец
                        g.DrawEllipse(penBlue, startX, startY, ringSize, ringSize);
                        g.DrawEllipse(penBlack, startX + ringSize + xStep, startY, ringSize, ringSize);
                        g.DrawEllipse(penRed, startX + (ringSize + xStep) * 2, startY, ringSize, ringSize);

                        // Нижний ряд колец
                        g.DrawEllipse(penYellow, startX + (ringSize + xStep) / 2, startY + yStep, ringSize, ringSize);
                        g.DrawEllipse(penGreen, startX + (ringSize + xStep) * 3 / 2, startY + yStep, ringSize, ringSize);
                    }
                    break;

                case "Winter":
                    // 1. Сугробы на земле
                    using (Brush snowBrush = new SolidBrush(Color.WhiteSmoke))
                    {
                        g.FillEllipse(snowBrush, -50, h - 80, w + 100, 150);
                        g.FillEllipse(snowBrush, w / 3, h - 60, w, 120);
                    }

                    // 2. Солнце в небе
                    using (Brush sunBrush = new SolidBrush(Color.Gold))
                    {
                        g.FillEllipse(sunBrush, w - 80, 20, 50, 50);
                    }

                    // 3. Простая новогодняя ёлочка треугольниками
                    using (Brush treeBrush = new SolidBrush(Color.ForestGreen))
                    {
                        int treeCenterX = w / 4;
                        int startTreeY = h - 140;

                        // Рисуем 3 яруса треугольников (снизу вверх)
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 50, startTreeY + 60), new Point(treeCenterX, startTreeY), new Point(treeCenterX + 50, startTreeY + 60) });
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 40, startTreeY + 20), new Point(treeCenterX, startTreeY - 30), new Point(treeCenterX + 40, startTreeY + 20) });
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 30, startTreeY - 15), new Point(treeCenterX, startTreeY - 60), new Point(treeCenterX + 30, startTreeY - 15) });
                    }

                    // 4. Падающий снег (несколько случайных точек)
                    using (Brush flakeBrush = new SolidBrush(Color.White))
                    {
                        g.FillEllipse(flakeBrush, w / 2, 40, 6, 6);
                        g.FillEllipse(flakeBrush, w / 3, 90, 5, 5);
                        g.FillEllipse(flakeBrush, w / 5, 50, 7, 7);
                        g.FillEllipse(flakeBrush, (int)(w * 0.7), 120, 6, 6);
                        g.FillEllipse(flakeBrush, (int)(w * 0.85), 80, 5, 5);
                    }
                    break;
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            currentDrawing = "Winter";
            pictureBox1.BackColor = Color.DeepSkyBlue; // Голубое небо для пейзажа
            pictureBox1.Invalidate();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            currentDrawing = "Russia";
            pictureBox1.BackColor = Color.White; // Белый фон (верхняя полоса)
            pictureBox1.Invalidate();
        }

        private void button3_Cusing System.Drawing.Drawing2D;

namespace WinFormsApp5
{
    public partial class Form1 : Form
    {
        private string currentDrawing = "";

        public Form1()
        {
            InitializeComponent();
            button1.Click += buttonJapaneseFlag_Click; // Замените button1 на имя вашей кнопки "Японский флаг"
            pictureBox1.Paint += pictureBox1_Paint;

            // Делаем фон PictureBox белым, как у флага Японии
            pictureBox1.BackColor = Color.White;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }
        private void buttonJapaneseFlag_Click(object sender, EventArgs e)
        {
            currentDrawing = "Japan"; // Запоминаем выбор
            pictureBox1.Invalidate(); // Принудительно обновляем PictureBox, чтобы вызвалось событие Paint
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias; // Включаем сглаживание для кругов и линий

            int w = pictureBox1.Width;
            int h = pictureBox1.Height;

            switch (currentDrawing)
            {
                case "Japan":
                    // Диаметр круга — 60% от высоты
                    int diameter = (int)(h * 0.6);
                    int xJ = (w - diameter) / 2;
                    int yJ = (h - diameter) / 2;

                    using (Brush redBrush = new SolidBrush(Color.FromArgb(188, 0, 45)))
                    {
                        g.FillEllipse(redBrush, xJ, yJ, diameter, diameter);
                    }
                    break;

                case "Russia":
                    // Высота одной полосы (всего 3 равные полосы)
                    int stripH = h / 3;

                    // Белую полосу не рисуем, так как фон PictureBox уже белый
                    // Синяя полоса (посередине)
                    using (Brush blueBrush = new SolidBrush(Color.FromArgb(0, 57, 166)))
                    {
                        g.FillRectangle(blueBrush, 0, stripH, w, stripH);
                    }
                    // Красная полоса (снизу)
                    using (Brush redBrush = new SolidBrush(Color.FromArgb(213, 43, 30)))
                    {
                        g.FillRectangle(redBrush, 0, stripH * 2, w, h - (stripH * 2));
                    }
                    break;

                case "Czech":
                    // Нижняя красная половина флага
                    using (Brush redBrush = new SolidBrush(Color.FromArgb(211, 20, 41)))
                    {
                        g.FillRectangle(redBrush, 0, h / 2, w, h / 2);
                    }
                    // Синий треугольник слева (доходит ровно до середины ширины флага)
                    using (Brush blueBrush = new SolidBrush(Color.FromArgb(17, 69, 126)))
                    {
                        Point[] trianglePoints = {
                            new Point(0, 0),         // Левый верхний угол
                            new Point(w / 2, h / 2), // Центр холста
                            new Point(0, h)          // Левый нижний угол
                        };
                        g.FillPolygon(blueBrush, trianglePoints);
                    }
                    break;

                case "Olympic":
                    // Толщина колец и их диаметр адаптируются под размер холста
                    int ringSize = (int)(h * 0.35);
                    int thick = ringSize / 8; // Толщина линии кольца

                    using (Pen penBlue = new Pen(Color.FromArgb(0, 129, 200), thick))
                    using (Pen penBlack = new Pen(Color.Black, thick))
                    using (Pen penRed = new Pen(Color.FromArgb(238, 51, 78), thick))
                    using (Pen penYellow = new Pen(Color.FromArgb(244, 195, 0), thick))
                    using (Pen penGreen = new Pen(Color.FromArgb(0, 166, 81), thick))
                    {
                        // Шаг смещения колец по горизонтали и вертикали
                        int xStep = (int)(ringSize * 0.55);
                        int yStep = (int)(ringSize * 0.45);

                        // Стартовая точка для центрования всей композиции
                        int startX = (w - (ringSize * 3 + xStep * 2)) / 2 + (ringSize / 2);
                        int startY = (h - (ringSize + yStep)) / 2;

                        // Верхний ряд колец
                        g.DrawEllipse(penBlue, startX, startY, ringSize, ringSize);
                        g.DrawEllipse(penBlack, startX + ringSize + xStep, startY, ringSize, ringSize);
                        g.DrawEllipse(penRed, startX + (ringSize + xStep) * 2, startY, ringSize, ringSize);

                        // Нижний ряд колец
                        g.DrawEllipse(penYellow, startX + (ringSize + xStep) / 2, startY + yStep, ringSize, ringSize);
                        g.DrawEllipse(penGreen, startX + (ringSize + xStep) * 3 / 2, startY + yStep, ringSize, ringSize);
                    }
                    break;

                case "Winter":
                    // 1. Сугробы на земле
                    using (Brush snowBrush = new SolidBrush(Color.WhiteSmoke))
                    {
                        g.FillEllipse(snowBrush, -50, h - 80, w + 100, 150);
                        g.FillEllipse(snowBrush, w / 3, h - 60, w, 120);
                    }

                    // 2. Солнце в небе
                    using (Brush sunBrush = new SolidBrush(Color.Gold))
                    {
                        g.FillEllipse(sunBrush, w - 80, 20, 50, 50);
                    }

                    // 3. Простая новогодняя ёлочка треугольниками
                    using (Brush treeBrush = new SolidBrush(Color.ForestGreen))
                    {
                        int treeCenterX = w / 4;
                        int startTreeY = h - 140;

                        // Рисуем 3 яруса треугольников (снизу вверх)
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 50, startTreeY + 60), new Point(treeCenterX, startTreeY), new Point(treeCenterX + 50, startTreeY + 60) });
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 40, startTreeY + 20), new Point(treeCenterX, startTreeY - 30), new Point(treeCenterX + 40, startTreeY + 20) });
                        g.FillPolygon(treeBrush, new Point[] { new Point(treeCenterX - 30, startTreeY - 15), new Point(treeCenterX, startTreeY - 60), new Point(treeCenterX + 30, startTreeY - 15) });
                    }

                    // 4. Падающий снег (несколько случайных точек)
                    using (Brush flakeBrush = new SolidBrush(Color.White))
                    {
                        g.FillEllipse(flakeBrush, w / 2, 40, 6, 6);
                        g.FillEllipse(flakeBrush, w / 3, 90, 5, 5);
                        g.FillEllipse(flakeBrush, w / 5, 50, 7, 7);
                        g.FillEllipse(flakeBrush, (int)(w * 0.7), 120, 6, 6);
                        g.FillEllipse(flakeBrush, (int)(w * 0.85), 80, 5, 5);
                    }
                    break;
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            currentDrawing = "Winter";
            pictureBox1.BackColor = Color.DeepSkyBlue; // Голубое небо для пейзажа
            pictureBox1.Invalidate();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            currentDrawing = "Russia";
            pictureBox1.BackColor = Color.White; // Белый фон (верхняя полоса)
            pictureBox1.Invalidate();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            currentDrawing = "Czech";
            pictureBox1.BackColor = Color.White; // Белый фон (верхняя половина)
            pictureBox1.Invalidate();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            currentDrawing = "Olympic";
            pictureBox1.BackColor = Color.White; // Белый фон
            pictureBox1.Invalidate();
        }
    }
}
lick(object sender, EventArgs e)
        {
            currentDrawing = "Czech";
            pictureBox1.BackColor = Color.White; // Белый фон (верхняя половина)
            pictureBox1.Invalidate();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            currentDrawing = "Olympic";
            pictureBox1.BackColor = Color.White; // Белый фон
            pictureBox1.Invalidate();
        }
    }
}