Спонсор: Microsoft
Опубликован: 31.08.2006 | Доступ: свободный | Студентов: 3925 / 218 | Оценка: 4.14 / 3.89 | Длительность: 39:16:00
ISBN: 978-5-9570-0021-3
Лекция 17:

Добавление графики и эффектов анимации

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >
Использование события Paint формы

Если вы протестируете показанный выше метод DrawLine в программе, то заметите, что созданная линия сохраняется в форме только до тех пор, пока ее что-нибудь не закроет. Если в какой-то момент в форме появится диалоговое окно, которое закроет собой эту линию, то при его исчезновении линия больше не будет видна. Линия также исчезнет, если вы минимизируете окно формы, а затем снова его развернете. Чтобы устранить эту проблему, вы должны поместить ваш графический код в процедуру события Paint формы так, что каждый раз, при обновлении формы, графика также перерисовывалась.

В следующем упражнение вы с помощью процедуры события Paint формы создадите три фигуры. Нарисованные вами фигуры будут сохраняться в форме даже тогда, когда форма будет перекрываться другим окном или минимизироваться.

Построение фигур линии, прямоугольника и эллипса
  1. Запустите Visual Studio и создайте в папке c:\vbnet03sbs\Гл.16 новый проект с именем My Draw Shapes.
  2. Измените размер формы так, чтобы она стала выше и шире, чем форма по умолчанию. Вам понадобится место для создания графических фигур. Однако вы не будете использовать никаких элементов управления Области элементов. Вы создадите фигуры, поместив в процедуру события Form1_Paint формы код программы.
  3. Установите свойство Text формы Form1 на значение Рисование фигур.
  4. Чтобы отобразить Редактор кода, щелкните в Обозревателе решений на кнопке View Code (Просмотреть код).
  5. В раскрывающемся списке Class Name (Имя класса) щелкните на Form1 Events. Form1 Events - это список событий вашего проекта, ассоциированных с объектом Form1.
  6. В раскрывающемся списке Method Name (Имя метода) щелкните на событии Paint.
  7. В Редакторе кода появится процедура события Form1_Paint. Это место, где вы должны ввести код программы, который должен исполняться при обновлении формы Visual Basic.
  8. Введите следующий код программы:

    'Готовим переменную GraphicsFun для графических вызовов
    Dim GraphicsFun As System.Drawing.Graphics
    GraphicsFun = Me.CreateGraphics
    
    'Для рисования линии и эллипса используем перо красного цвета
    Dim PenColor As New System.Drawing.Pen(System.Drawing.Color.Red)
    GraphicsFun.DrawLine(PenColor, 20, 30, 100, 80)
    GraphicsFun.DrawEllipse(PenColor, 10, 120, 200, 160)
    
    'Для создания заполненного прямоугольника используем кисть зеленого цвета
    Dim BrushColor As New SolidBrush(Color.Green)
    GraphicsFun.FillRectangle(BrushColor, 150, 10, 250, 100)

    Этот пример процедуры события рисует три графические фигуры - красную линию, красный эллипс и заполненный зеленым цветом прямоугольник. Чтобы программирование графики стало доступно, процедура объявляет в коде переменную с именем GraphicsFun и использует метод CreateGraphics для активизации (или присвоения значения) этой переменной. Переменная PenColor типа System.Drawing.Pen используется для установки цвета рисования линии и эллипса, а переменная BrushColor типа SolidBrush используется для установки цвета заливки прямоугольника. Эти примеры являются только самой верхушкой айсберга графической библиотеки - существует множество различных фигур, цветов и их вариантов, которые можно использовать с помощью методов класса System.Drawing.Graphics.

  9. Чтобы запустить программу, щелкните на кнопке Start (Начать).

    Примечание. Готовая программа Draw Shapes расположена в папке c:\vbnet03sbs\Гл.16\draw shapes.

    Visual Basic загрузит форму и выполнит событие Paint этой формы. Ваша форма будет выглядеть примерно так.


  10. Минимизируйте форму, а затем снова восстановите ее размер. Событие Paint формы снова выполнится, и графические фигуры обновятся.
  11. Чтобы завершить программу, щелкните на кнопке Закрыть.

Добавление анимации

Вывод растровых изображений и рисование фигур добавляет программе визуальную привлекательность, но для программистов королевой графических эффектов всегда была анимация. Анимация - это имитация движения, производимая быстрым отображением на экране серии связанных между собой изображений. Настоящая анимация требует программного перемещения объектов, и часто использует также изменение размера или формы изображения.

В этом разделе вы узнаете, как добавлять в ваши программы простую анимацию. Вы узнаете, как обновлять свойства Top и Left области вывода изображений, управлять скоростью анимации с помощью объекта таймера и обнаруживать границу окна вашей формы.

Перемещение объектов по форме

В Visual Basic 6 специальный метод с именем Move позволял перемещать объекты в системе координат. Метод Move больше не поддерживается элементами управления Visual Basic .NET; однако вместо него вы можете использовать следующие методы и свойства:

Ключевое слово Описание
Left Это свойство может быть использовано для горизонтального перемещения объекта (влево или вправо).
Top Это свойство может быть использовано для вертикального перемещения объекта (вверх или вниз).
Location Это свойство может быть использовано для перемещения объекта в указанное место.
SetBounds Этот метод устанавливает границы объекта, задавая его размер и положение.

В следующем разделе обсуждается, как использовать для перемещения объектов свойства Left, Top и Location. Чтобы получить дополнительную информацию о методе SetBounds, найдите ключевое слово SetBounds в справочной системе Visual Basic.

Свойства Left и Top позволяют перемещать объект. Чтобы переместить объект в горизонтальном направлении, используйте свойство Left. Left имеет следующий синтаксис

объект.Left = по-горизонтали

где объект - это имя объекта формы, который вы хотите переместить, а по-горизонтали - это новая горизонтальная (по оси x) координата левого края объекта, измеренная в пикселях. Например, следующий оператор программы перемещает объект области вывода изображений в точку, расположенную в 300 пикселях справа от левого края окна:

PictureBox1.Left = 300

Чтобы переместить объект на относительное расстояние, вы должны добавлять или вычитать пиксели из текущего значения свойства Left. Например, чтобы переместить объект на 50 пикселей вправо, вы должны добавить к свойству Left значение 50, как показано здесь:

PictureBox1.Left = PictureBox1.Left + 50

Аналогично, вы можете изменить вертикальное положение объекта на форме, установив его свойство Top. Синтаксис свойства Top имеет вид

объект.Top = по-вертикали

где объект - это имя объекта формы, который нужно переместить, а по-вертикали - это новая вертикальная (по оси y) координата верхнего края объекта, измеренная в пикселях. Например, следующий оператор программы перемещает объект области вывода изображений в точку, расположенную в 150 пикселях ниже строки заголовка окна:

PictureBox1.Top = 150

Относительное перемещение вверх или вниз осуществляется с помощью добавления или вычитания пикселей из текущего значения свойства Top. Например, чтобы переместить объект на 30 пикселей вниз, нужно добавить к свойству Top значение 30, как показано здесь:

PictureBox1.Top = PictureBox1.Top + 30
< Лекция 16 || Лекция 17: 12345 || Лекция 18 >
Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Светлана Ведяева
Светлана Ведяева
Россия, Саратов