Язык программирования:
C#
Среда программирования:
Visual Studio 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 WindowsFormsApplication8 { public partial class Form1 : Form { private Point pole;//центр формы private Timer timer = new Timer();//таймер private Pen pen = new Pen(Color.White, 2);//Перо для рисования private Pen pen_2 = new Pen(Color.Black, 0.5f);//Перо для рисования private float x1 = 25; // х для первой прямой private float y1 = 0; // у для первой прямой private float x2 = 0; // х для второй прямой private float y2 = 25; //у для второй прямой private float x3 = 1; private float y3 = 1; private Graphics g; private float add = 3; // увеличение координат private float tmpAdd = 0.7f; // увеличение координат private float widthLine = 0.6f; // увеличение толщины пера private float widthLine_2 = 0.3f; //увеличение толщины пера private float i = 0; // вращение рисунка public Form1() { InitializeComponent(); //вычисляем центр для координатной сетки pole = new Point(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2); timer.Tick += new EventHandler(timer_tick); this.Paint += new PaintEventHandler(Form1_Paint); timer.Interval = 10; // скорость обновления timer.Enabled = true; //таймер включен } private void timer_tick(object sender, EventArgs e) { this.Refresh(); // обновляем форму } private void Form1_Paint(object sender, PaintEventArgs e) { if (timer.Enabled) g = e.Graphics; //инициализируем объект для рисования { //Перенос начала координат в центр клиентской части формы g.TranslateTransform(pole.X, pole.Y); i+=0.3f; // увеличиваем угол вращения x1 += add; // увеличиваем координаты прямых y2 += add; x3 += tmpAdd; y3 += tmpAdd; pen.Width += widthLine; // увеличиваем первую кисть pen_2.Width += widthLine_2; // увеличиваем вторую кисть g.RotateTransform(i); // вращение рисунка if (x1 * 2 > x3) // если длина прямой внешней больше прямой внутренней { g.DrawLine(pen, -x1, y1, x1, y1); g.DrawLine(pen, x2, -y2, x2, y2); g.DrawLine(pen_2, -x3, -y3, x3, y3); g.DrawLine(pen_2, -x3, y3, x3, -y3); } else { g.DrawLine(pen_2, -x3, -y3, x3, y3); g.DrawLine(pen_2, -x3, y3, x3, -y3); g.DrawLine(pen, -x1, y1, x1, y1); g.DrawLine(pen, x2, -y2, x2, y2); } if (x1 > this.Width*2) // если прямая заполяет собой все пространство для рисования { x1 = 25; //возвращаем к прежним значениям y1 = 0; x2 = 0; y2 = 25; pen.Width = 1; add = tmpAdd; tmpAdd = 3; widthLine = widthLine_2; widthLine_2 = 1; this.BackColor = Color.White; } else { if (x3 > this.Width * 2) // если прямая заполяет собой все пространство для рисования { x3 = 25; // придаем примерные координаты для внутренней прямой y3 = 25; pen_2.Width = 2; tmpAdd = add; add = 3; widthLine_2 = widthLine; widthLine = 1; this.BackColor = Color.Black; } } } } } }
Прикрепленный файл | Размер |
---|---|
volozhanina_alina_x.rar | 36.25 кб |