Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.48
Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.48

Методы

Метод RotateAt служит для поворота объекта вокруг указанной точки на угол, определенный условием задачи. Параметр angle устанавливает величину утла, параметр Point определяет координаты точки, вокруг которой совершается поворот.

Метод Scale осуществляет сжатие или растяжение вдоль указанной оси координат. Параметры sx и sy являются коэффициентом, определяющим величину растяжения и сжатия.

Метод Translate осуществляет перемещение вдоль вектора, определенного расположением рисунка. То есть, если мы повернем изображение с помощью метода RotateAt на некий угол, на такой же угол изменится и направление вектора перемещения. Этот метод чрезвычайно облегчает работу при создании программы криволинейного движения объекта.

Все эти методы имеют еще один параметр: элементы списка MatrixOrder. С их помощью можно произвести несколько преобразований с одним объектом не одновременно, а в определенной последовательности. Элемент Prepend производит указанное преобразование до начала других преобразований, а элемент Append - после.

А теперь попробуем составить коды, демонстрирующие действие описанных выше методов и конструкторов. В приведенном ниже примере задействованы процедуры обработки

Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования

Matrix

событий Form_Paint и Timer_Tick. Один и тот же код, создающий прямоугольник, использован в обеих процедурах. Это сделано для наглядности.

Дело в том, что преобразование геометрических фигур производится одновременно с запуском программы. В результате на экране мы можем наблюдать только преобразованные объекты. А вот как выглядел объект первоначально, остается неизвестным. Поэтому в данном случае прямоугольник сначала создается с помощью процедуры Form_Paint и в таком виде остается на форме. Затем этот же прямоугольник изменяется с помощью процедуры Timer_Tick и через установленный интервал времени, например через дйе секунды, отображается в уже преобразованном виде. Таким образом, можно проследить ход аффинных преобразований. В приведенном коде мы создаем прямоугольник с помощью метода DrawPath, используя процедуру Form_Paint. Затем в процедуре Timer_Tick создаем тот же прямоугольник, добавляя коды, преобразующие данный прямоугольник в параллелограмм. Для этого объявляем переменную matrix, значением которой является экземпляр класса Matrix. Используя конструктор номер три, задаем параметры этого экземпляра: rect (прямоугольник) и point (массив из трех точек, определяющих преобразование прямоугольника в параллелограмм).


⇐ Предыдущая Следующая ⇒
 
 
 
Powered by Exponenta