使用计时器快速平滑地在WPF中的图像之间轻弹?

时间:2015-02-23 16:28:59

标签: c# wpf timer

我想在我的WPF应用程序上每0.2秒显示一个随机图像。

我已尝试使用各种.NET计时器来实现这一点,并且响应并不精彩 - 它可以正常工作,但它往往会出现断断续续的情况,或者一张图像会明显长于其他图像。

这里最好的方法是什么/我错过了什么?我假设它是System.Timer或Random()的问题。是否有更好的计时器使用>

我在创建PlayerViewModels时将所有图像预加载为BitmapSource属性。

我已经发布了以下代码:

    private const int TIMER_INTERVAL = 200;
    private Timer _timer;
    private static Random _random = new Random();
    public List<PlayerViewModel> Players { get; set; }
    public PlayerViewModel CurrentPlayer { get; set; }


    public MainViewModel()
    {
        Players = new PlayerInfoParser().Players.Select(x=> new PlayerViewModel(x)).ToList();
        CurrentPlayer = GetRandomPlayer();
        _timer = new Timer(UpdatePlayer, null, 0, TIMER_INTERVAL);
    }

    private void UpdatePlayer(object state)
    {
        CurrentPlayer = GetRandomPlayer();
        OnPropertyChanged("CurrentPlayer"); // Update View
    }

    private PlayerViewModel GetRandomPlayer()
    {
        var randomNumber = _random.Next(Players.Count);
        return (Players[randomNumber]);
    }

0 个答案:

没有答案