WPF中使用Storyboard做计时器

2016-12-14 19:04:40来源:CSDN作者:u013140441人点击

以下代码将可以在WPF上使用StoryBoard的模拟Timer计时器.

private Storyboard storyLoop;
private int index;

private void StartTheStoryboardTimer()
{
    storyLoop = new Storyboard();
    index = 0;

    DoubleAnimation animation = new DoubleAnimation();
    //1 毫秒的间隔时间,大家可以自己改动.
    animation.Duration = new Duration(TimeSpan.FromMilliseconds(1));
    Storyboard.SetTarget(animation, textBox1);
    //此处可以绑定界面上任意控件,不过需要有支持动画的属性,如 ProgressBar.ValueProperty 或 RadioButton.OpacityProperty 等.
    Storyboard.SetTargetProperty(animation, new PropertyPath(TextBox.OpacityProperty));
    storyLoop.Children.Add(animation);
    storyLoop.Completed += new EventHandler(storyLoop_Completed);
    //循环运行1000次,并在progressbar中显示进程.
    progressBar1.Value = 0;
    progressBar1.Maximum = 1000;
    storyLoop.Begin();
}
void storyLoop_Completed(object sender, EventArgs e)
{

//完成时添加处理函数,并Begin()
    index++;
    progressBar1.Value = index;
    if(progressBar1.Value < progressBar1.Maximum)
    {
         //如果index值没到, 继续往下开始运行同一个storyboard, 这是一个链式反应.
         storyLoop.Begin();
    }


}

原文地址http://blog.jinlook.com/archives/59.html

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台