Компьютерная графика, мультимедиа и игры на Visual C#


         

к работе таймер, дважды щелкаем


Чтобы подключить к работе таймер, дважды щелкаем значок timer1 (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 65.2. Метод для мультипликации изображений.
private void timer1_Tick(object sender, EventArgs e)
{
      //Создаем объект myGraphics класса Graphics:
      Graphics myGraphics = CreateGraphics();
      //Вызываем метод DrawImage, используя перегрузку №8:
      myGraphics.DrawImage(myArrayImages[j], -10, -10,
      myArrayImages[j].Width, myArrayImages[j].Height);
      //Высвобождаем ресурсы, выделенные объекту myGraphics:
      myGraphics.Dispose();
      //Организовываем цикл для шести рисунков:
      j = j + k;
      if (j == 5)
      {
            //От последнего рисунка переходим к первому:
            k = -5;
      }
      else if (j == 0)
      {
            //Задаем первый рисунок для начала цикла:
            k = 1;
      }
}
В этом коде главным является вызов перегруженного метода DrawImage, который в VC# имеет много видов перегрузки. Здесь использована перегрузка с сигнатурой Graphics.DrawImage Method(Image, Int32, Int32, Int32, Int32).
Напомним, что система координат связана с  Form1, а начало координат (0, 0) расположено в верхнем левом углу этой Form1. Координаты (-10, -10)  в коде являются координатами верхнего левого угла j – го рисунка (j = 0, 1, 2, 3, 4, 5). Изменяя эти координаты, мы можем удобнее расположить рисунок на Form1. Последние два параметра в методе DrawImage определяют ширину и высоту рисунка на форме Form1.
Учитывая важность данного кода для использования на практике, приведем его второй вариант. А именно, вместо вывода рисунков при помощи метода DrawImage (точнее, вместо приведенной на листинге строки кода с этим методом), мультипликацию можно выводить в рамку рисунка pictureBox1 (предварительно расположив этот элемент PictureBox на форме) при помощи кода:
   //Центрируем каждый рисунок внутри рамки pictureBox1:

Содержание  Назад  Вперед