Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_1-2.docx
Скачиваний:
3
Добавлен:
06.11.2018
Размер:
757.66 Кб
Скачать

Криві Без’є

Криві Безье будуються по чотирьох точках, тобто параметрами методу 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]