我想使用10张图像制作自定义动画进度条。现在我用一个Timer`s蜱改变每5毫秒资源图片:xaml自定义进度条与图像
XAML:
<Grid>
<Image HorizontalAlignment="Stretch"
Margin="0"
VerticalAlignment="Top"
Stretch="Fill"
x:Name="imageProgressBar"/>
</Grid>
C#
private void StartAnimation()
{
if (IsAnimating) return;
_timer = new DispatcherTimer();
_timer.Interval = FrameDuration;
_timer.Tick += TimerTick;
_timer.Start();
}
private void StopAnimation()
{
if (!IsAnimating) return;
_timer.Stop();
_timer = null;
}
private void TimerTick(object sender, object e)
{
if (FramesCount == 0 || _frames == null) return;
_currentFrame++;
_currentFrame = _currentFrame % FramesCount;
if (_currentFrame < _frames.Count)
imageProgressBar.Source = _frames[_currentFrame];
}
这种变体的作品,但它不够好,因为它使用UI(我猜)线程处理,这就是为什么它有时慢。 有什么办法改变图像来源不同吗?
这可能是改变并随后重新渲染图像,这比渲染源头的速度慢得多。由于您的需求非常特别,因此可能需要马上加载所有10张图片,然后改变其不透明度或可见度以实现您以后的效果。 – Logan
@dmitriy检查jerrynixon的定制进度环关联[链接](http://blog.jerrynixon.com/2015/06/lets-code-build-custom-progress-ring-in.html)希望这可以帮助。 .. – Krth
感谢您的回复。 @Logan我只是想过,但因为我是新的XAML,我无法考虑如何实现它 – dmitriy