Управляемое вращение линии

 

Листинг 55.1. Код проектирования рисунка.

//Переменную "angle" (для угла поворота) приравниваем нулю:

int angle = 0;

private void pictureBox1_Paint(object sender,

PaintEventArgs e)

{

//Объявляем локальные переменные:

//Радиус вращающейся линии:

float r = 100.0F;

//Абсцисса и ордината неподвижной граничной точки,

//вокруг которой вращается линия (центра вращения):

float x_centre = 100.0F;

float y_centre = 100.0F;

//Текущие значения абсциссы и ординаты

//граничной вращающейся точки:

float x, y;

//Определяем текущие значения абсциссы и ординаты

//граничной вращающейся точки

//и преобразовываем в тип (float):

x = x_centre + r * Convert.ToSingle(

Math.Cos(2 * Math.PI * angle / 360));

y = y_centre + r * Convert.ToSingle(

Math.Sin(2 * Math.PI * angle / 360));

//Выполняем процедуру DrawLine класса Graphics

//для построения линии по двум точкам

//с координатами (x_centre, y_centre) и (x, y):

e.Graphics.DrawLine(new Pen(Color.Black, 3),

x_centre, y_centre, x, y);

//Увеличиваем угол поворота линии,

//на один шаг, равный 6 градусам:

angle = angle + 6;

//Обнуляем угол поворота линии,

//когда линия сделает полный оборот

//на 360 градусов:

if (angle == 360) angle = 0;

//Для наглядности рисуем окружность

//(типа циферблата часов),

//внутри которой будет вращаться линия:

e.Graphics.DrawEllipse(new Pen(Color.Blue, 2),

0, 0, 200, 200);

//Рисуем две оси симметрии окружности,

//горизонтальную и вертикальную:

e.Graphics.DrawLine(new Pen(Color.Red, 1),

0, 100, 200, 100);

e.Graphics.DrawLine(new Pen(Color.Red, 1),

100, 0, 100, 200);

}

Чтобы установить значение свойства Interval компонента Timer в зависимости от свойства Value ползунка элемента управления TrackBar, дважды щелкаем элемент управления TrackBar в режиме проектирования (рис. 37.2). Появляется файл Form7.cs с шаблоном, который после записи двух строк нашего кода (не считая комментариев) принимает вид следующего метода.

Листинг 55.2. Метод для элемента управления TrackBar.

private void trackBar1_Scroll(object sender,

EventArgs e)

{

//Устанавливаем свойство таймера Enabled равным true:

timer1.Enabled = true;

//Устанавливаем значение свойства Interval таймера

//в зависимости от перемещения ползунка Value:

timer1.Interval = trackBar1.Value;

}

Чтобы подключить к работе таймер, дважды щелкаем значок для компонента Timer в режиме проектирования. Появляется файл Form7.cs с шаблоном, который после записи строки нашего кода (не считая комментариев) принимает такой вид.

Листинг 55.3. Метод для компонента Timer.

private void timer1_Tick(object sender, EventArgs e)

{

//Перерисовываем клиентскую область элемента pictureBox1

//через каждый Interval времени:

pictureBox1.Refresh();

}

В этом коде метод Refresh (класса Control) перерисовывает клиентскую область элемента управления PictureBox через интервал времени, заданный ползунком.

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