Поворот тексту

Досить часто виникає потреба вивести текст під певним кутом. Для цього ми можемо використати можливості класу 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). Поворот тексту за годинниковою стрілкою здійснюється при виборі додатного кута, проти – від’ємного.

Приклад роботи програми наведено на рисунку: