Воспроизведение последовательности изображений на холсте - PullRequest
0 голосов
/ 17 января 2012

У меня есть холст в моей форме WPF, который мне нужен для запуска последовательности изображений во время выполнения. Как мне обновить изображения на холсте?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Ответ ColinE полезен, однако мы также должны иметь возможность использовать файловый поток, как указано ниже, чтобы мы могли обновлять или изменять ранее отображаемые изображения:

                            FileInfo fileinfo = new FileInfo(MyFilePath);
                            if (fileinfo.Exists)
                            {
                                using (FileStream fs = System.IO.File.Open(MyFilePath,
                                                    FileMode.Open,
                                                    FileAccess.Read,
                                                    FileShare.ReadWrite))
                                {
                                    using (StreamReader reader = new StreamReader(fs))
                                    {

                                        BitmapImage bitImg = new BitmapImage();
                                        bitImg.BeginInit();
                                        bitImg.StreamSource = fs;
                                        bitImg.EndInit();
                                        Image.ImageSource = bitImg;

                                    }
                                }
                            }
0 голосов
/ 17 января 2012

Любые изменения, внесенные в визуальные элементы в приложении WPF, будут отражены в представлении. Вам не нужно вызывать метод Refresh, чтобы сделать изменения видимыми. Для вашего приложения вы можете создать DispatcherTimer, а затем либо изменить Image.Source, либо заменить Image на каждый Tick.

Например:

<Canvas>
  <Image x:Name="myImage" Source="SomeUri"/>
</Canvas>

И этот код позади:

var timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Start();
timer.Tick += (s,e) =>
{
  myImage.Source = // next image in sequence
}
...