Постепенный вывод текста в Label - VB

Узнай цену своей работы

Формулировка задачи:

Добрый день. Необходимо реализовать плавный вывод текста на Label (на него, т.к. необходимо прозрачный фон обязательно). Но 2 проблемы: 1. На некоторых скоростях текст мерцает. 2. Максимальной скорости не хватает, то есть хочется сделать и быстрее вывод текста. Подскажите как можно решить эти проблемы. Или может другой объект для этого взять?

Решение задачи: «Постепенный вывод текста в Label»

textual
Листинг программы
Option Explicit
 
Private Declare Function DrawText Lib "user32" Alias "DrawTextW" (ByVal hdc As Long, ByVal lpStr As Long, ByVal nCount As Long, lpRect As Any, ByVal wFormat As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As Any) As Long
 
Private Const DT_WORDBREAK As Long = &H10
 
Dim WithEvents tmr As Timer
Dim WithEvents spd As HScrollBar
 
Dim symb As Single
Private Const s = "ГќГІГ* ГЈГ«Г*ГўГ* Г§Г*Г*êîìèò çðèòåëÿ Г± ìèðîì «Higurashi no Naku Koro ni»."
 
Private Sub Form_Load()
    AutoRedraw = True
    Set tmr = Controls.Add("VB.Timer", "tmr")
    Set spd = Controls.Add("VB.HScrollbar", "spd")
    tmr.Interval = 32
    spd.Move 0, ScaleHeight - spd.Height, ScaleWidth
    spd.Visible = True: spd.Min = 1: spd.Max = 100
    Font.Size = 24
End Sub
 
Private Sub tmr_Timer()
    Dim rect(3) As Long, reset As Boolean
    Cls
    If symb >= Len(s) Then symb = Len(s): reset = True
    GetClientRect hwnd, rect(0)
    DrawText hdc, StrPtr(s), symb, rect(0), DT_WORDBREAK
    symb = symb + spd.Value / 20
    Refresh
    If reset Then symb = 0
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5