Криві Без’є
Криві Безье будуються по чотирьох точках, тобто параметрами методу DrawBezier, окрім пера, є чотири екземпляра класу Point або класу POINTF – чотири крапки. Різниця між ними полягає в тому, що клас Point містить дані типу Integer, а клас POINTF - дані типу Singler. У наступному коді в якості параметрів використані координати точок (x, у).
Dim pen As New Pen(Color.Black, 3)
e.Graphics.DrawBezier(pen, 220, 220, 340, 270, 220, 320, 340, 370)
Крива, замкнута крива (сплайн)
Параметром методів DrawClosedCurve і DrawCurve є масив точок. У коді, наведеному нижче, оголошується змінна point, значенням якої є масив точок і по цьому параметру будується звичайний і замкнутий сплакни:
Dim point1() As Point = {New Point(20, 20), New Point(150, 30), New Point(220, 50), New Point(70, 70), New Point(70, 10)}
Dim point2() As Point = {New Point(20, 150), New Point(150, 160), New Point(180, 220), New Point(70, 200), New Point(70, 140)}
Dim pen As New Pen(Color.Red, 5)
e.Graphics.DrawCurve(pen, point1)
e.Graphics.DrawClosedCurve(pen, Point2)
Сегмент
Сегмент створюється методом DrawPie, який має наступні параметри: перо, екземпляр структури Rectangle (тобто для побудови сегменту необхідні параметри чотирикутника), кутовий розмір і початковий кут. Нижче наведені різні варіанти побудови сегменту:
Dim pen As New Pen(Color.Brown, 3)
e.Graphics.DrawPie(pen, 10, 10, 150, 150, 330, 250)
Dim k As Integer
For k = 0 To 360 Step 120
e.Graphics.DrawPie(pen, 10, 300, 150, 150, k, 180)
Next
Dim i As Integer
For i = 0 To 10
e.Graphics.DrawPie(pen, 200 + 5 * i, 10, 200, 200 - 10 * i, 0, 180)
Next
Багатокутники
Багатокутник, або замкнуті ламані лінії, створюється методами DrawPolygon, параметрами яких є екземпляр класу Pen, що визначає стиль контура, а також масив вершин багатокутника.
Заповнений багатокутник малюється методами Fillpolygon, у яких, на відміну від методу DrawPolygon, замість пера задається кисть.
Приклади багатокутників
Public Class Form1
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim ps1() As Point = {New Point(60, 10), New Point(110, 110), New Point(10, 60), New Point(150, 60), New Point(30, 110)}
e.Graphics.DrawPolygon(New Pen(Color.Red, 4), ps1)
Dim ps2(4), ps3(4) As Point
Dim i As Integer
For i = 0 To ps1.GetUpperBound(0)
ps2(i).X = ps1(i).X + 100
ps2(i).Y = ps1(i).Y + 100
ps3(i).X = ps1(i).X + 200
ps3(i).Y = ps1(i).Y + 200
Next
e.Graphics.FillPolygon(New SolidBrush(Color.Red), ps2,_ Drawing2D.FillMode.Winding)
e.Graphics.FillPolygon(New SolidBrush(Color.Red), ps3,_ Drawing2D.FillMode.Alternate)
End Sub
End Class
Відображення тексту
Текст в класі Graphics виводиться одним з методом Drawstring. Загальними параметрами цих методів є параметр s, що задає відображуваний текст, параметр font — його шрифт і параметр brush — перо, що його малює.
Точка виведення тексту задається або парою координат, або екземпляром класу POINTF. Параметр layoutRectangle задає прямокутну область, в якій повинен розміститися текст. Якщо яка-небудь частина тексту виходить за межі цієї області, то вона не відображається. Параметр format, що має тип stringFormat, дозволяє встановити додаткові атрибути форматування тексту, такі як вирівнювання, перенесення слів.
Виведення тексту
Public Class Form1
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim g As Graphics = e.Graphics
Dim brBlack As Brush = Brushes.Black
Dim brRed As Brush = Brushes.Red
Dim fntC As New Font("Courier", 18)
Dim fntTNR As New Font("Times New Roman", 16, FontStyle.Bold)
Dim fntCSMS As New Font("Comic Sams MS", 14, FontStyle.Italic And FontStyle.Underline)
g.DrawString("Шрифт Courier", fntC, brBlack, 10, 10)
g.DrawString("Шрифт Times New Roman " & " Цей текст весь не потрапить на екран", fntTNR, brRed, New RectangleF(New PointF(10, 40), New SizeF(280, 42)))
g.DrawString("Шрифт Comic Sams MS", fntCSMS, brBlack, New PointF(10, 100))
g.DrawString("Текст", fntCSMS, brBlack, New PointF(10, 130), New StringFormat(StringFormatFlags.DirectionVertical))
End Sub
End Class