Бігучий рядок (варіант 2)

Ми вже розглядали можливість створення бігучого рядка. Але там було використано дещо застарівші функції, які залишились від VB6. Спробуємо переробити проект, використавши методи класу String. Крім того з метою надання додаткової привабливості текстовому ефекту, використаємо градієнтну заливку тексту.

Для початку створимо новий проект, який назвемо Бігучий рядок 2. Для виконання поставленої мети нам потрібно лише форма та елемент керування таймер. В дизайнері форм помістимо таймер на створену форму. Для виконання проекту створимо три обробника подій: завантаження форми (Form1_Load), прорисовки форми (Form1_Paint) та подію таймера (Timer1_Tick). Всі вказані обробники можна отримати з панелі властивостей обраного об’єкта, натиснувши значок блискавки та двічі клікнувши мишею по відповідній події.

Повний текст коду проекту наведено нижче:

'Імпортує простір імен Drawing2D

Imports System.Drawing.Drawing2D

Public Class Form1

    'Проект реалізує можливість створення бігучої стрічки,

    'з використанням можливостей класу String

 

    'Оголосимо декілька глобальних змінних:

    'Колір лівої частини форми

    Private startColor1 As Color = Color.Green

    'Колір правої частини форми

    Private endColor As Color = Color.Gold

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

    Private f As Font

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

    Private Txt As String = "Новини           "

    'Щоб рядки не злипалися, потрібно в кінці текстового напису додати декілька пробілів

 

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

                            Handles MyBase.Load

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

        Me.Text = "Бігучий рядок 2"

        Me.Width = 340

        Me.Height = 100

    End Sub

 

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

    Public Function RunningText()

        'Суть функції полягає в наступному:

        'забираємо від рядка один символ з лівого боку

        'та додаємо його з правого

        Txt = Txt.Substring(1, (Txt.Length - 1)) + Txt.Substring(0, 1)

        'Перерисовуємо область форми

        Invalidate()

    End Function

 

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

                            Handles Timer1.Tick

        'Викликаємо створену функцію при кожній події таймера

        RunningText()

    End Sub

 

    Private Sub Form1_Paint(ByVal sender As System.Object, _

                            ByVal e As System.Windows.Forms.PaintEventArgs) _

                            Handles MyBase.Paint

        'Створюємо новий пензель та задаємо йому ключові характеристики

        Dim myBrush As Brush = New LinearGradientBrush(ClientRectangle, startColor1, endColor, 10)

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

        f = New Font(Font.Name, 60, FontStyle.Bold, GraphicsUnit.Pixel)

        'Виводимо текстовий рядок з обраними характеристиками

        e.Graphics.DrawString(Txt, f, myBrush, 0, 0)

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

        myBrush.Dispose()

        f.Dispose()

    End Sub

End Class

 Запустивши проект на виконання, побачимо текст, який переміщується з часом зліва направо, крім того, під час руху плавно змінює свій колір: