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

Private Sub Forml_Paint(ByVal sender As Object, ByVal e _ As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

Dim path As New System.Drawing.Drawing2D.GraphicsPath

path.AddLine(200, 200, 100, 200)

path.AddEllipsedOO, 100, 200, 200)

Dim point = New PointF(200.0F, 200.OF)

Dim matrix As New System.Drawing.Drawing2D.Matrix

Static angle As Single = 0

angle = angle + 1

matrix.RotateAt(angle, point)

path.Transform(matrix)

e.Graphics.DrawPath(New Pen(Color.Brown, 3), path) End Sub

Private Sub Timerl_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timerl.Tick Me.RefreshO End Sub

На первый взгляд этот код не менее громоздкий, чем предыдущий, но он значительно проще, так как предлагает готовые решения за счет использования методов аффинных преобразований. Здесь не надо ломать голову над тригонометрическими функциями. Метод RotateAt (вращение) определяет цель преобразований, а метод Transform (превращение) дает установку

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

Динамика графических объектов

на выполнение задачи. Осталось создать экземпляр класса matrix и определить точку отсчета координат PointF, которая должна находиться в центре эллипса. Если вы еще не разобрались во всех тонкостях этого кода, вам поможет следующая глава, в которой мы подробно рассмотрим аффинные преобразования.

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

Аффинные преобразования

Сначала вспомним, что же такое аффинные преобразования. Аффинные преобразования - это преобразования (плоскости или пространства), при которых прямые переходят в прямые, и сохраняется их параллельность (в частности, преобразования подобия). Типичный пример аффинных преобразований отображен на рис. 7.1. На этом рисунке показан прямоугольник, который путем незначительных изменений - изменений углов - превращен в параллелограмм.

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

Рис. 7.1 ▼ Аффинные преобразования

Matrix

Возможности Visual Basic .NET позволяют перемещать графические изображения, поворачивать их на заданный угол, изменять размеры путем сжатия или растяжения.

7.1. Matrix

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


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