我的计划是创建一个文本源,当添加新的文本行时,所有当前的文本行都会向上移动,新的文本行会附加到底部(向上移动动画并淡入淡出),而最旧的文本行顶部的线渐弱。
我认为我无法使用WinForms,因为标签没有不透明度设置。 所以我用WPF开始了一个项目。
我有一个计时器,只要添加新文本就会启动,并为衰落/移动设置动画。
如果下一个文本行只占用一行,它们都向上移动一行,如果它占用2行,它们都会向上移动2等。
这是一个假设最多显示3个标签的图表:
Label1
Label2
Label3
当添加新行时,Label1会逐渐消失,其余的行动起来(通过更改margin.top值):
Label2
Label3
Label4
我知道如何创建这样的标签:
labelTest = New Label
labelTest.Content = "Test Line"
labelTest.Margin = New Thickness(-4, 100, 0, 0)
grid.Children.Add(labelTest)
但是我会为每一个新行做这个,并且需要单独引用它们,我也会删除掉淡的标签,是否有处理它们的方法或者这是不必要的?< / p>
修改 我觉得很傻。我可以创建一个标签数组,但下面有一个新问题。 我删除了上面的计时器代码,因为我认为我输入的内容太多与我的问题无关,也改变了标题。
所以我做了一个像这样的数组:
Dim labels() As Label = New Label() {label1, label2, label3} 'etc..
我将上面的标签代码更改为:
Dim mrg as Integer = 100
For Each lbl As Label In labels
mrg -= 10
lbl = New Label
lbl.Content = "Text"
lbl.Margin = New Thickness(-4, mrg, 0, 0)
grid.Children.Add(lbl)
Next
这很好用,但我该如何单独操作呢?我试过了:
labels(0).Content = "New Text"
但它似乎没有更新文本。