Вращающееся градиентное заполнение фигур цветом

 

Листинг 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 с шаблоном, в который записываем код, приведенный в предыдущей главе.

Предлагаю ознакомиться с аналогичными статьями: