2

我想知道是否有一种方法可以为表单上显示的文本添加一种动画。

当我想到这一点时,我想到的有点类似于您可以在 PowerPoint 中对文本执行的操作(即类似打字机的动画,一次输入一个文本,让整个文本框以某种效果出现等),我只是想了解您可以使用 Windows 窗体做什么。

目前我正在使用文本框在我的表单应用程序上显示信息,但事后我意识到标签也可以。

编辑:原来我毕竟在使用标签,我只是给它一个名字,里面有“文本框”,因为没有更好的描述。

4

2 回答 2

4
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++;
        }
    }
}
于 2012-09-12T15:10:31.013 回答
1

现在,我个人不会这样做,因为免费的动画往往会惹恼用户。我只会谨慎地使用动画——当它真正有意义的时候。

也就是说,您当然可以执行以下操作:

 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();
 }

或类似的东西。它会每半秒打勾并在多行文本框中添加另一个字符。只是某人可以做的一个例子。

于 2012-09-12T15:06:56.173 回答