我想知道是否有一种方法可以为表单上显示的文本添加一种动画。
当我想到这一点时,我想到的有点类似于您可以在 PowerPoint 中对文本执行的操作(即类似打字机的动画,一次输入一个文本,让整个文本框以某种效果出现等),我只是想了解您可以使用 Windows 窗体做什么。
目前我正在使用文本框在我的表单应用程序上显示信息,但事后我意识到标签也可以。
编辑:原来我毕竟在使用标签,我只是给它一个名字,里面有“文本框”,因为没有更好的描述。
public partial class Form1 : Form
{
int _charIndex = 0;
string _text = "Hello World!!";
public Form1()
{
InitializeComponent();
}
private void button_TypewriteText_Click(object sender, EventArgs e)
{
_charIndex = 0;
label1.Text = string.Empty;
Thread t = new Thread(new ThreadStart(this.TypewriteText));
t.Start();
}
private void TypewriteText()
{
while (_charIndex < _text.Length)
{
Thread.Sleep(500);
label1.Invoke(new Action(() =>
{
label1.Text += _text[_charIndex];
}));
_charIndex++;
}
}
}
现在,我个人不会这样做,因为免费的动画往往会惹恼用户。我只会谨慎地使用动画——当它真正有意义的时候。
也就是说,您当然可以执行以下操作:
string stuff = "This is some text that looks like it is being typed.";
int pos = 0;
Timer t;
public Form1()
{
InitializeComponent();
t = new Timer();
t.Interval = 500;
t.Tick += new EventHandler(t_Tick);
}
void t_Tick(object sender, EventArgs e)
{
if (pos < stuff.Length)
{
textBox1.AppendText(stuff.Substring(pos, 1));
++pos;
}
else
{
t.Stop();
}
}
private void button1_Click(object sender, EventArgs e)
{
pos = 0;
textBox1.Clear();
t.Start();
}
或类似的东西。它会每半秒打勾并在多行文本框中添加另一个字符。只是某人可以做的一个例子。