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