我正在使用VS2010和Windows 7进行滚动文本动画.我有一个文本框,标签和一个按钮,当然还有一个计时器来完成这项工作.以下是我放入计时器的代码.
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Label1.Text = TextBox1.Text
Timer1.Interval = 1000
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
'Dim txtBuffer As String = TextBox1.Text
Label1.Text = Label1.Text
If Len(Label1.Text) <> 0 Then
Label1.Text = Microsoft.VisualBasic.Right(Label1.Text, (Len(Label1.Text) - 1))
Else
Timer1.Enabled = False
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我的问题是当你在字符串的开头输入一定量的空间时,滚动动画有点奇怪.它不会显示字符串从右侧移动到标签中,但只显示整个字符串然后开始滚动出标签的左边界.
我使用固定长度的标签,我的目的是模拟留言板,因此文本可以从右侧滚动到msg框并从左侧移出.
我每次触发计时器时都会进行调试,并且一定数量空间的字符串头一个接一个地消失.但我没有在标签上看到预期的动画.
标签的大小为7个大写字母的宽度,AutoSize属性为false.如果你输入的文本框中是"[7 space] ABCDEFG",那么你会期望滚动效果是"[7 space]" - >"[6 space] A" - >"[5 space] AB" - > "[4 space] ABC" - > ...->"ABCDEFG" - >"BCDEFG" - >"CDEFG" - > ...->"".但你不会得到它.所有你会得到的是"[7空间]"一段时间,然后突然出现"ABCDEFG",然后这些字母一个接一个地消失.字符串看起来不像是从标签区域的右侧滑入.
我不知道是否有人可以提供帮助,或者有更好的想法来实现这个动画?谢谢!
只是在面板控件内移动标签比尝试找出字符测量值等更容易,以便让文本从右侧开始然后向左移动:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label1.AutoSize = True
Label1.Text = TextBox1.Text
Label1.Parent = Panel1
Label1.Location = New Point(Panel1.ClientSize.Width, _
Panel1.ClientSize.Height / 2 - (Label1.Height / 2))
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If Label1.Right < 0 Then
Label1.Left = Panel1.ClientSize.Width
Else
Label1.Left -= 10
End If
End Sub
Run Code Online (Sandbox Code Playgroud)