Градієнт та візерунок
В попередніх прикладах ми використовували алгоритми роботи з рядками, їх можна застосовувати, наприклад, для виведення заголовку форми, де не можна змінити розмір, шрифт та колір тексту. В наступних статтях розглянемо приклади створення більш художніх текстових написів. Для цього використаємо можливості Visual Basic опрацьовувати графіку. Більш детально, робота з графікою буде розглядатися в наступних розділах сайту, а в даній задачі використаємо елементарні методи роботи з текстом.
Для прикладу створимо проект в якому виведемо два текстових написи, та заповнимо один з них градієнтною заливкою, а інший візерунком у вигляді цеглинок.
Для початку завантажимо Visual Studio 2010 та обиремо пункт меню Файл – Создать проект (File | New | Project). У наступному вікні New Project обираємо пункт Visual Basic, а потім в області шаблонів (середня колонка) обираємо шаблон (Templates) Windows Forms Application. В якості назви проекту введемо ім’я Градієнт та візерунок і натиснемо кнопку ОК.
В даному проекті не будемо використовувати жоден з елементів керування, текстові написи просто виведемо в полі форми, використовуючи подію створення форми Form1_Paint:
Ще, для використання градієнтів та заливки візерунків, нам потрібно підключити бібліотеку для роботи зі вказаними стилями. Для цього достатньо на початку програми дописати стрічку імпорту відповідної бібліотеки:
Imports System.Drawing.Drawing2D
Повний лістинг проекту наведено нижче:
Imports System.Drawing.Drawing2D
Public Class Form1
'Створимо декілька глобальних змінних:
'Змінна, яка зберігатиме значення шрифту:
Dim f As Font = New Font("Tahoma", 72.0F)
'Змінні для зберігання тексту, який виводитимемо:
Dim sBrick As String = "Цеглинки"
Dim sGradient As String = "Градієнт"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
'Задаємо початкові властивості форми:
Me.Text = "Градієнт та візерунок"
Me.Width = 500
Me.Height = 300
End Sub
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 hbr As New HatchBrush(HatchStyle.HorizontalBrick, Color.White, Color.Tomato)
'Використовуючи створений пензель виведемо в форму відформатований текст:
g.DrawString(sBrick, f, hbr, 0, 0)
'Створимо ще один пензель, але на цей раз у вигляді градієнту:
Dim rect As New Rectangle(10, 50, ClientSize.Width, ClientSize.Height)
Dim lgrb As New LinearGradientBrush(rect, Color.Violet, Color.SkyBlue, _
LinearGradientMode.BackwardDiagonal)
'Виведемо другу текстову змінну з використанням градієнту:
g.DrawString(sGradient, f, lgrb, 0, 100)
End Sub
End Class
Програма матиме наступний вигляд: