Язык программирования:
C#
Среда программирования:
Microsoft Visual Studio 2013
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 Цветные_треугольники { public partial class Form1 : Form { Bitmap myBitmap;//объявляем bitmap Graphics g;//объявляем графику SolidBrush bgcol = new SolidBrush(Color.AntiqueWhite);//цвет фона SolidBrush blue = new SolidBrush(Color.FromArgb(180, 3, 55, 134)); //полупрозрачная синяя заливка SolidBrush red = new SolidBrush(Color.FromArgb(180, 134, 3, 10)); //полупрозрачная красная заливка Pen redPen = new Pen(Color.Red); //красный контур Pen bluePen = new Pen(Color.Blue); //синий контур float xr1, yr1, xr2, yr2, xr3, yr3; // коэффициенты приращения для красного треугольника float xb1, yb1, xb2, yb2, xb3, yb3; // коэффициенты приращения для синего треугольника int cnt;//счетчик public Form1() { InitializeComponent(); //инициализация компонентов } private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = true; //при загрузке формы включается таймер } private void DrawTriangles()//функция изменения фигуры { myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаем битмап Graphics g = Graphics.FromImage(myBitmap);//создаем графику g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//добавляем сглаживание g.FillRectangle(bgcol, 0, 0, 500, 500);//заливаем фон PointF rA = new PointF(25 + xr1, 100 + yr1); //задаем точки - координаты треугольника с увеличивающимся шагом, который равен x(конечное)-x(начальное)/50 PointF rB = new PointF(300 + xr2, 50 + yr2); PointF rC = new PointF(100 + xr3, 310 + yr3); PointF bA = new PointF(445 + xb1, 180 + yb1); PointF bB = new PointF(330 + xb2, 450 + yb2); PointF bC = new PointF(215 + xb3, 275 + yb3); PointF[] RedTriangle = { rA, rB, rC }; //задаем массив из меняющихся координат треугольника PointF[] BlueTriangle = { bA, bB, bC }; g.DrawPolygon(redPen, RedTriangle); //рисуем контуры треугольников g.DrawPolygon(bluePen, BlueTriangle); g.FillPolygon(red, RedTriangle); //заливаем их g.FillPolygon(blue, BlueTriangle); pictureBox1.BackgroundImage = myBitmap;// отображаем Bitmap на pictureBox } private void timer1_Tick(object sender, EventArgs e) { cnt++; //увеличиваем счетчик if (cnt < 50) //увеличиваем шаг до тех пор, пока значение счетчика не достигнет 50 { xr1 += (float)2.5; yr1 += (float)6; xr2 += (float)1.6; yr2 += (float)2.8; xr3 += (float)6.7; yr3 += (float)2.5; xb1 += (float)-8.1; yb1 += (float)-2.2; xb2 += (float)-1.4; yb2 += (float)-7.8; xb3 += (float)-1.3; yb3 += (float)1.5; } if (cnt >= 50) //как только cnt >= 50 - уменьшаем шаг (т.е. возвращаем треугольники на прежнее место) { xr1 += (float)-2.5; yr1 += (float)-6; xr2 += (float)-1.6; yr2 += (float)-2.8; xr3 += (float)-6.7; yr3 += (float)-2.5; xb1 += (float)8.1; yb1 += (float)2.2; xb2 += (float)1.4; yb2 += (float)7.8; xb3 += (float)1.3; yb3 += (float)-1.5; } if (cnt == 100) { xr1 = 0; yr1 = 0; xr2 = 0; yr2 = 0; xr3 = 0; yr3 = 0; xb1 = 0; yb1 = 0; xb2 = 0; yb2 = 0; xb3 = 0; yb3 = 0; cnt = 0; } //анимация закончилась, обнуляем счетчик, значения приращения и начинаем сначала DrawTriangles(); //прорисовываем треугольники } } }
Прикрепленный файл | Размер |
---|---|
Gavrilenko_Coloured_Triangles.rar | 38.29 кб |