Язык программирования:
C#
Среда программирования:
Microsoft Visual Studio Community C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { private Bitmap b;//создаём bitmap и графику private Graphics g; SolidBrush bl = new SolidBrush(Color.Black);//цвет фона-квадрата SolidBrush bu = new SolidBrush(Color.BlueViolet);//цвет квадратов-кругов Pen p2 = new Pen(Color.Black, 12);//цвет рисующей маски float i1, i2, i3, i4, k, f, f1;//объявляем переменные public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { timer1.Start(); } private void Draw() { b = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаём графику из bitmap Graphics g = Graphics.FromImage(b); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//запускаем антиалиасинг g.FillRectangle(bl, 0, 0, 500, 500);//заливаем черный фон-квадрат g.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);//смещаем координатную сетку в середину picture_box g.FillRectangle(bu, -220 + i1, -20, 40, 40);//нарисуем начальную позицию когда квадраты стоят по кругу g.DrawEllipse(p2, -235 + i1 + f1, -35 + f1, 70 - f, 70 - f);//рисуем маску-окружность которая трансформирует квадрат в круг g.FillRectangle(bu, 180 - i1, -20, 40, 40);//дальше аналогично рисуем каждый квадрат и к каждому квадрату окружность которая сделает из него круг g.DrawEllipse(p2, 165 - i1 + f1, -35 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -20, -220 + i1, 40, 40); g.DrawEllipse(p2, -35 + f1, -235 + i1 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -20, 180 - i1, 40, 40); g.DrawEllipse(p2, -35 + f1, 165 - i1 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -170 - i2, 130 + i2, 40, 40); g.DrawEllipse(p2, -185 - i2 + f1, 115 + i2 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 130 + i2, -170 - i2, 40, 40); g.DrawEllipse(p2, 115 + i2 + f1, -185 - i2 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -170 - i2, -170 - i2, 40, 40); g.DrawEllipse(p2, -185 - i2 + f1, -185 - i2 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 130 + i2, 130 + i2, 40, 40); g.DrawEllipse(p2, 115 + i2 + f1, 115 + i2 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -210 + i3, 59 + i4, 40, 40); g.DrawEllipse(p2, -225 + i3 + f1, 44 + i4 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 170 - i3, -99 - i4, 40, 40); g.DrawEllipse(p2, 155 - i3 + f1, -114 - i4 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -210 + i3, -99 - i4, 40, 40); g.DrawEllipse(p2, -225 + i3 + f1, -114 - i4 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 170 - i3, 59 + i4, 40, 40); g.DrawEllipse(p2, 155 - i3 + f1, 44 + i4 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -99 - i4, 170 - i3, 40, 40); g.DrawEllipse(p2, -114 - i4 + f1, 155 - i3 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 59 + i4, -210 + i3, 40, 40); g.DrawEllipse(p2, 44 + i4 + f1, -225 + i3 + f1, 70 - f, 70 - f); g.FillRectangle(bu, 59 + i4, 170 - i3, 40, 40); g.DrawEllipse(p2, 44 + i4 + f1, 155 - i3 + f1, 70 - f, 70 - f); g.FillRectangle(bu, -99 - i4, -210 + i3, 40, 40); g.DrawEllipse(p2, -114 - i4 + f1, -225 + i3 + f1, 70 - f, 70 - f); pictureBox1.BackgroundImage = b; } private void timer1_Tick(object sender, EventArgs e) { if (k < 20)//описывается движение из стартового положения к исходному { i1 += 0.4F; i2 += 0.6F; i3 += 0.2F; i4 += 0.22F; f += 0.44F; f1 += 0.22F; k += 0.4F; } if (k >= 20 && k < 30)//пауза, счетчик увеличивается k += 0.4F; if (k >= 30 && k < 50)//описываем движение из исходного к стартовому { i1 -= 0.4F; i2 -= 0.6F; i3 -= 0.2F; i4 -= 0.22F; f -= 0.44F; f1 -= 0.22F; k += 0.4F; } if (k >= 50 && k < 60)//пауза, счетчик увеличивается k += 0.4F; if (k >= 60)//обнуление значений на каждом шаге { i1 = 0; i2 = 0; i3 = 0; i4 = 0; f = 0; f1 = 0; k = 0; } Draw();//вызываем функцию прорисовки pictureBox1.BackgroundImage = b; } } }
Прикрепленный файл | Размер |
---|---|
Transformation_Sidelev.zip | 57.41 кб |