Сонечко

Використовуючи попередній приклад, створимо проект, в якому текст виведемо навколо центру форми у вигляді сонечка. Виведення тексту відбуватиметься поступово, для цього використаємо таймер. Початок та зупинку анімації реалізуємо за допомогою кнопки.

Для початку завантажимо Visual Basic та створимо новий проект, який назвемо Сонечко. З панелі елементів керування додаємо на форму кнопку Button та елемент керування Timer.

Напишемо програмний код для події Form1_Load,  події Button1_Click та Timer1_Tick. Порожні обробники цих подій отримаємо подвійним кліком миші на відповідних елементах. Повний лістинг проекту наведено нижче:

Public Class Form1

    'Проект реалізує анімований поворот тексту навколо деякої точки

 

    'Визначимо змінну для збереження тексту для виведення

    Dim txt As String = "Сонечко"

    'Створимо новий формат шрифту

    Dim f As New Font("Comic Sans MS", 18, FontStyle.Italic)

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                           Handles MyBase.Load

        'Задаємо початкові властивості формі та елементам керування

        With Me

            .Text = "Ефект сонечка"

            .Width = 350

            .Height = 350

            .BackColor = Color.Cyan

        End With

        Button1.Text = "Старт"

        Timer1.Interval = 200

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                               Handles Button1.Click

        'Реалізуємо початок та зупинку анімації

        If Button1.Text = "Старт" Then

            Button1.Text = "Стоп"

            Timer1.Enabled = True

        ElseIf Button1.Text = "Стоп" Then

            Button1.Text = "Старт"

            Timer1.Enabled = False

        End If

    End Sub

 

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                            Handles Timer1.Tick

        Dim g As Graphics = CreateGraphics()

        g = CreateGraphics()

        'Оголошуємо змінну для вибору кута повороту

        Static i As Integer

        'Знайдемо центр форми

        Dim cx As Integer = ClientSize.Width \ 2

        Dim cy As Integer = ClientSize.Height \ 2

        'Переміщаємось в центр форми

        g.TranslateTransform(cx, cy)

        'Якщо лічильник рівний нулю - очистимо форму та побудуємо в її центрі еліпс

        If i = 0 Then

            g.Clear(BackColor)

            g.FillEllipse(Brushes.Yellow, -25, -25, 50, 50)

        End If

 

        'Створимо допоміжну змінну-лічильник

        Dim c As Integer

        'Виведемо на форму всі написи під кутами від нуля до і

        For c = 0 To i Step 15

            g.DrawString(txt, f, Brushes.Yellow, 30, 0)

            g.RotateTransform(24)

        Next

 

        'Нарощуємо основний лічильник

        i = i + 15

        'Якщо значення лічильника перевищує 360, обнуляємо його

        If i > 360 Then i = 0

        'Звільняємо всі інструменти малювання

        g.ResetTransform()

        g.Dispose()

    End Sub

 

End Class

Отже, кожен раз, коли відбувається подія Timer1_Tick ми виводимо текст під кутом, величина якого, на 24 градуси більша за попередній кут. Таким чином, отримаємо 15 промінців для нашого сонечка. Коли лічильник перевищує значення 360 градусів (тобто повний оберт), ми його обнуляємо, очищуємо форму та розпочинаємо все заново.

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