//Получаем объект класса Graphics
//для изображения мяча,
//удаляем существующий мяч и рисуем новый мяч.
//Задаем черный цвет Black для мяча,
//чтобы он был лучше виден в книге:
myGraphics = Graphics.FromImage(myBitmap);
myGraphics.Clear(BackColor);
myGraphics.FillEllipse(Brushes.Black, new
Rectangle(move_of_ball_x,
move_of_ball_y, 2 * radius_of_ball_x, 2 *
radius_of_ball_y));
//Высвобождаем ресурсы, выделенные объекту myGraphics:
myGraphics.Dispose();
//Задаем расположение мяча в центре прямоугольника:
position_of_ball_x =
Convert.ToInt32(width_of_rectangle / 2);
position_of_ball_y =
Convert.ToInt32(height_of_rectangle / 2);
}
Чтобы подключить к работе таймер, дважды щелкаем значок для компонента Timer (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 59.3. Метод для компонента Timer.
private void timer1_Tick(object sender, EventArgs e)
{
//Создаем объект myGraphics класса Graphics:
Graphics myGraphics = CreateGraphics();
//Рисуем четыре граничные линии прямоугольника,
//от которых будет отскакивать летающий мяч:
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
width_of_rectangle, boundary_of_rectangle_у);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
boundary_of_rectangle_x, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, height_of_rectangle,
width_of_rectangle, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
width_of_rectangle, boundary_of_rectangle_у,
width_of_rectangle, height_of_rectangle);