Создание элемента управления, отображающего вращающийся в вертикальной плоскости треугольник - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть задачка

"Создать элемент управления "CustomControl". Данный элемент управления должен предоставлять возможность добавлять на форму анимированный компонент: - Отображать вращающийся в вертикальной плоскости треугольник. - Элемент управления должен наследоваться от класса Control - Возможность изменения скорости анимации через свойства элемента управления (AnimationSpeed) используя атрибут "[Browsable(true)]"

если есть у кого-нибудь примеры или какое нибудь учебное пособие, как можно реализовать подобную задачу, подскажите пожалуйста)

Решение задачи: «Создание элемента управления, отображающего вращающийся в вертикальной плоскости треугольник»

textual
Листинг программы
  1.     public class CustomControl : Control
  2.     {
  3.         private Timer timer;
  4.         private int angle = 0;
  5.  
  6.         [Browsable(true)]
  7.         [DefaultValue(5)]
  8.         public int AnimationSpeed { get; set; }
  9.  
  10.         public CustomControl()
  11.         {
  12.             SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
  13.  
  14.             AnimationSpeed = 5;
  15.  
  16.             timer = new System.Windows.Forms.Timer(){Interval = 20};
  17.             timer.Enabled = true;
  18.             timer.Tick += delegate { angle += AnimationSpeed; Invalidate(); };
  19.         }
  20.  
  21.         protected override void OnPaint(PaintEventArgs e)
  22.         {
  23.             base.OnPaint(e);
  24.             e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
  25.  
  26.             var center = new Point(ClientRectangle.Width/2, ClientRectangle.Height/2);
  27.             var p1 = new Point(- Width / 4, -Height / 4);
  28.             var p2 = new Point(Width / 4, -Height / 4);
  29.             var p3 = new Point(0, Height / 3);
  30.  
  31.             e.Graphics.TranslateTransform(center.X, center.Y);
  32.             e.Graphics.RotateTransform(angle);
  33.  
  34.             using(var pen = new Pen(ForeColor))
  35.                 e.Graphics.DrawPolygon(pen, new Point[]{p1, p2, p3});
  36.         }
  37.  
  38.         protected override void Dispose(bool disposing)
  39.         {
  40.             base.Dispose(disposing);
  41.             timer.Dispose();
  42.         }
  43.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы