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

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

Static angle As Single = 0 angle = angle + 1

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

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

е.Graphics.TranslateTransform(angle, 0) "e.Graphics.RotateTransform(angle) "e.Graphics.ScaleTransform(angle, 1)

e.Graphics.DrawPie(New Pen(Color.Red, 3), 100, 160, 100, 100, 0, 245)

e.Graphics.DrawEllipse(New Pen(Color.Brown, 5), 150, 20, _ 150, 100) Me.Refresh() End Sub

Маленькая подробность относительно аффинных преобразований патча с градиентной заливкой. В этом случае преобразования касаются не только элементов патча, но и самой заливки. В предлагаемом ниже примере на надписи Label создается рисунок в виде патча, имеющего градиентную заливку. Единственный элемент патча - эллипс, который приводится во вращательное движение с помощью метода RotateAt. Размеры элемента Label - 110x140 пикселов.

Private Sub Labell_Paint(ByVal sender As Object, ByVal e _ As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint Dim pat As New System.Drawing.Drawing2D.GraphicsPath Dim rec As New Rectangle(10, 0, 90, 140) pat.AddEl1ipse(rec)

Dim grad As New System. Drawing. Drawing2D.PathGradient Brush (pat) Dim pont As New PointF(55, 70)

Dim col() As Color = {Color.FromArgb(255, 50, 50, 50)}

grad.CenterColor = Color.Gold

grad.CenterPoint = pont

grad.SurroundColors = col

Static a As Integer

a = a + 1

Dim matr As New System.Drawing.Drawing2D.Matrix matr.RotateAt(a, pont)

grad.Transform = matr "преобразование заливки pat.Transform(matг) "преобразование патча e.Graphics.FillPath(grad, pat) End Sub

Итак, мы рассмотрели некоторые способы преобразования графики. Осталось решить, какими из них лучше пользоваться. Сразу это сделать нелегко, так как потребуется время, чтобы разобраться в отличиях одних методов от других. Все зависит от задачи, которая стоит перед программой и, конечно, от личных вкусов и привычек программиста. Хотя на первых порах выбор способа программирования большого значения не имеет.


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