//как точную копию объекта myGraphicsPath2:
myGraphicsPath =
(GraphicsPath)myGraphicsPath2.Clone();
//Задаем точку, относительно которой
//будет поворачиваться фигура:
PointF myPointF =
myGraphicsPath.GetBounds().Location;
myPointF.X = myPointF.X +
myGraphicsPath.GetBounds().Width / 2;
myPointF.Y = myPointF.Y +
myGraphicsPath.GetBounds().Height / 2;
//Поворачиваем фигуру по часовой стрелке
//на один шаг step_alpha
//при помощи метода RotateAt класса Matrix:
myMatrix1.RotateAt(step_alpha, myPointF);
//Применяем метод Transform класса GraphicsPath
//для трансформирования матриц myMatrix:
myGraphicsPath.Transform(myMatrix1);
myGraphicsPath.Transform(myMatrix2);
//Рисуем преобразованную фигуру:
myGraphics.DrawPath(new Pen(Color.Red, 3),
myGraphicsPath);
}
}
В панели Properties (для PictureBox) на вкладке Events дважды щелкаем по имени события Paint. Появляется шаблон метода PictureBox_Paint, который после записи нашего кода принимает следующий вид.
Листинг 56.2. Метод для элемента управления PictureBox.
private void pictureBox1_Paint(object sender,
PaintEventArgs e)
{
//Вызываем метод FigureDraw
//для рисования фигуры в i-м положении:
myAnimation.FigureDraw(e.Graphics, i);
//Задаем следующее i-е положение фигуры:
i = i + 1;
}
Чтобы установить значение свойства Interval компонента Timer в зависимости от свойства Value ползунка элемента управления TrackBar, дважды щелкаем элемент управления TrackBar в режиме проектирования. Появляется файл Form9.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 56.3. Метод для элемента управления TrackBar.
private void trackBar1_Scroll(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = trackBar1.Value;
}
Чтобы подключить к работе таймер, дважды щелкаем значок для компонента Timer (ниже формы в режиме проектирования). Появляется файл Form9.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 56.4. Метод для компонента Timer.
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Refresh();
}