Вращающееся градиентное заполнение фигур цветом
Листинг 61.1. Метод для компонента Timer1.
//Объявляем и обнуляем глобальную переменную angle:
int angle = 0;
private void timer1_Tick(object sender, EventArgs e)
{
//Экземпляр структуры ntPtr:
IntPtr myIntPtr = new IntPtr();
//Свойство Handle:
myIntPtr = this.Handle;
//Создаем объект myGraphics класса Graphics
//и применяем функцию FromHwnd:
Graphics myGraphics = Graphics.FromHwnd(myIntPtr);
//Задаем параметры прямоугольника:
Rectangle myRectangle = new Rectangle(5, 5, 700, 400);
//Задаем два граничных цвета Red и White
//градиентной заливки:
LinearGradientBrush myLinearGradientBrush =
new LinearGradientBrush(myRectangle,
Color.Red, Color.White, angle);
//Заполняем прямоугольник цветом:
myGraphics.FillRectangle(myLinearGradientBrush,
myRectangle);
//Организовываем циклический процесс вращения:
angle = angle + 10;
if (angle >= 360) angle = 0;
//Высвобождаем ресурсы, выделенные объекту
//myGraphics:
myGraphics.Dispose();
}
Чтобы установить значение свойства Interval компонента Timer в зависимости от свойства Value ползунка элемента управления TrackBar, дважды щелкаем элемент управления TrackBar в режиме проектирования. Появляется файл Form1.cs с шаблоном, в который записываем код, приведенный в предыдущей главе.
Согласно разработанной выше методике, чтобы иметь возможность приостановить (и запустить вновь) процесс анимации при помощи кнопки Stop Animation, дважды щелкаем эту кнопку в режиме проектирования. Появляется файл Form1.cs с шаблоном, в который записываем код, приведенный в предыдущей главе.