Как установить одно изображение за раз до бесконечности, как для создания Gif? - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно создать что-то вроде gif из четырех кадров, получаемых из API.

Я получил изображение в xaml:

Image Source="{Binding FrameWebcam,Mode=TwoWay}"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"/>

И свойство в моем ViewModel:

public ImageSource FrameWebcam
{
  get { return _FrameWebcam; }
  set
  {
    _FrameWebcam = value;
    OnPropertyChanged();
  }
}

Я могу показать изображение без проблем.Мне нужно взять из списка ImageSource каждый элемент и установить свойство FrameWebcam, по одному элементу за раз, от первого до последнего и запустить его снова (для создания эффекта Gif).Я подумал что-то вроде этого: создать задачу:

private Task SetFrameTask;

и создать экземпляр в конструкторе моего ViewModel:

SetFrameTask = new Task(() =>
            {
                while (true)
                {
                    this.SetFrame();
                    Task.Delay(1000);
                }
            });

private void SetFrame()
{
    foreach (var frame in framesWebcam)
    {
        FrameWebcam = frame;
        Task.Delay(250);
    }
}

SetFrameTask.Start();

Содержимое списка может измениться, поэтому я хочу остановить этоцикл, измените содержимое списка и запустите его снова, чтобы создать еще один Gif.Проблема в том, что только иногда изображение появляется, и в большинстве случаев отображается любое изображение.Как я могу улучшить это?

...