Поворот тексту
Досить часто виникає потреба вивести текст під певним кутом. Для цього ми можемо використати можливості класу Graphics.
Для прикладу створимо проект, який виводитиме текст під обраним кутом. Кут обиратимемо за допомогою елемента керування NumericUpDown. Побудову здійснюватимемо за допомогою кнопки Button. Причому текст можна повертати як за часовою стрілкою, так і проти, в межах одного оберту.
Для початку завантажимо Visual Basic та створимо новий проект, який назвемо Поворот тексту. З панелі елементів керування додамо на форму кнопку Button та елемент керування NumericUpDown.
Розмістимо їх так, як вказано на рисунку:
Напишемо програмний код для події Form1_Load та події Button1_Click. Порожні обробники цих подій отримаємо подвійним кліком миші на відповідних елементах. Повний лістинг проекту наведено нижче:
Public Class Form1
'Проект відображає можливості повороту тексту на заданий кут
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
'Задаємо початкові властивості елементам керування форми
Me.Text = "Поворот тексту"
Me.Width = 350
Me.Height = 350
Button1.Text = "Повернути"
'Задаємо мінімальне та максимальне значення елементу керування NumericUpDown
NumericUpDown1.Minimum = -360
NumericUpDown1.Maximum = 360
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
'Оголошуємо нову змінну для роботи з графікою
Dim g As Graphics = CreateGraphics()
g = CreateGraphics()
'Знаходимо середину форми
Dim cx As Integer = Me.ClientSize.Width \ 2
Dim cy As Integer = Me.ClientSize.Height \ 2
'Оголошуємо новий стиль шрифту
Dim f As New Font("Comic Sans MS", 18, FontStyle.Bold)
'Очищуємо форму
g.Clear(BackColor)
'Переносимо початок відліку в центр форми
g.TranslateTransform(cx, cy)
'Створюємо змінну для збереження кута повороту та надаємо їй значення
Dim i As Integer
i = NumericUpDown1.Value
'Повертаємо текст на вказаний кут
g.RotateTransform(i)
'Виводимо текст під обраним кутом
g.DrawString("Поворот", f, Brushes.Red, 0, 0)
'Звільняємо елементи керування
g.ResetTransform()
g.Dispose()
End Sub
End Class
В даному проекті ми використали метод RotateTransform класу Graphics. За допомогою елемента керування NumericUpDown, ми обирали потрібний кут (причому в даному прикладі, можна і не оголошувати додаткову змінну і, а відразу звертатись до властивості Value елементу NumericUpDown). Поворот тексту за годинниковою стрілкою здійснюється при виборі додатного кута, проти – від’ємного.
Приклад роботи програми наведено на рисунку: