gpt4 book ai didi

c# - WPF - 根据时间动画进度条

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:26 25 4
gpt4 key购买 nike

我希望制作一个进度动画,以便完成一个周期需要 1 分钟。我的代码是:

ProgressBar _progressSec = new ProgressBar();
_progressSec.Name = "_progressSec";
_progressSec.Minimum = 0;
_progressSec.Maximum = 60;
_progressSec.Value = DateTime.Now.Second;
this.RegisterName(_progressSec.Name, _progressSec);

NewGrid.Children.Add(_progressSec);

Storyboard newStory = new Storyboard();
DoubleAnimation newAnimation = new DoubleAnimation();
newAnimation.To = 60;
newAnimation.BeginTime = new TimeSpan(DateTime.Now.Second);
newAnimation.RepeatBehavior = RepeatBehavior.Forever;
newAnimation.Duration = new Duration(TimeSpan.FromMinutes(1));
newStory.Children.Add(newAnimation);

Storyboard.SetTarget(newAnimation, _progressSec);
Storyboard.SetTargetProperty(newAnimation, new PropertyPath(ProgressBar.ValueProperty));

newStory.Begin();

这个小节刚好需要 1 分钟来完成一个循环,这不是我想要的。因此,如果我从 40 秒开始,它需要一分钟才能达到 60 秒。

我想要它做的是从当前的秒值开始,每秒递增,当它达到 60 秒时,重新开始,所以如果它从 40 秒开始,则需要 20 秒才能达到一分钟。当它到达一分钟时,我希望它重新开始(从 0 开始)。当然,我可以说我正在开发一个时钟/计时器,但我想我最好解释一下我运行代码时发生了什么。

当我将 From 值添加到 newAnimation 时,它始终从该值开始,而不是从 BeginTime 值开始。

有什么想法吗?

谢谢。

最佳答案

好吧,如果你想让你的动画持续一分钟以外的时间,你必须这样告诉它:

int from = 50;
int to = 60;
newAnimation.From = from;
newAnimation.To = to;
newAnimation.Duration = new Duration(TimeSpan.FromSeconds(to - from));

关于c# - WPF - 根据时间动画进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5779038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com