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

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

Dim path As New System.Drawing.Drawing2D.GraphicsPath Dim rect As Rectangle = new Rectangle(5,10,100,100) path.AddRectangle(rect)

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

Dim graf As Graphics = CreateGraphics() Dim path As New System. Drawing. Drawing2 D.Graphics Path Dim rect As Rectangle = New Rectangle(5, 10, 100, 100) path.AddRectangle(rect)

Dim point() As Point = {New Point(110, 10), New _ Point(210, 10), New Point(170, 110)}

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

ГЛАВА 7 ▼ Аффинные преобразования

Dim matrix As New System.Drawing.Drawing2D.Matrix _

(rect, point)

path.Transform(matrix)

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

Обратите внимание на строку path. Transform (matrix). Метод Transform класса GraphicsPath выполняет аффинное преобразование экземпляра класса GraphicsPath. То есть почти весь код сводится к объявлению необходимых переменных, определяющих параметры изменения рисунка, а выполнение самой задачи ограничивается действием метода Transform.

Рассмотрим действие этого метода на других примерах, в которых будут применены методы преобразования RotateAt (вращение), Scale (растяжение или сжатие) и Translate (перемещение).

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

Dim a As Graphics = CreateGraphics()

Dim pen As Pen = New Pen(Color.Brown, 3)

Dim path As New System.Drawing.Drawing2D.GraphicsPath

Dim rect As Rectangle = New Rectangle(150, 100, 100, 100)

path.AddRectangle(rect)

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

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

Static angle As Integer

angle = angle + 1

Dim matrix As New System.Drawing.Drawing2D.Matrix _

(1, 0, 0, _ 1, 0, 0)

Dim point = New PointF(200, 150)

matrix.RotateAt(angle, point)

"matrix.Translate(angle, 0)

"matrix.Scale(2, 1)

path.Transform(matrix)


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