Создание элемента управления, отображающего вращающийся в вертикальной плоскости треугольник - C#
Формулировка задачи:
Здравствуйте,
есть задачка
"Создать элемент управления "CustomControl". Данный элемент управления должен предоставлять возможность добавлять на форму анимированный компонент: - Отображать вращающийся в вертикальной плоскости треугольник. - Элемент управления должен наследоваться от класса Control - Возможность изменения скорости анимации через свойства элемента управления (AnimationSpeed) используя атрибут "[Browsable(true)]"
если есть у кого-нибудь примеры или какое нибудь учебное пособие, как можно реализовать подобную задачу, подскажите пожалуйста)Решение задачи: «Создание элемента управления, отображающего вращающийся в вертикальной плоскости треугольник»
textual
Листинг программы
- public class CustomControl : Control
- {
- private Timer timer;
- private int angle = 0;
- [Browsable(true)]
- [DefaultValue(5)]
- public int AnimationSpeed { get; set; }
- public CustomControl()
- {
- SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
- AnimationSpeed = 5;
- timer = new System.Windows.Forms.Timer(){Interval = 20};
- timer.Enabled = true;
- timer.Tick += delegate { angle += AnimationSpeed; Invalidate(); };
- }
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
- e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
- var center = new Point(ClientRectangle.Width/2, ClientRectangle.Height/2);
- var p1 = new Point(- Width / 4, -Height / 4);
- var p2 = new Point(Width / 4, -Height / 4);
- var p3 = new Point(0, Height / 3);
- e.Graphics.TranslateTransform(center.X, center.Y);
- e.Graphics.RotateTransform(angle);
- using(var pen = new Pen(ForeColor))
- e.Graphics.DrawPolygon(pen, new Point[]{p1, p2, p3});
- }
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
- timer.Dispose();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д