Загрузка данных
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();
}
}
}