2012-01-17 4 views
0

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

+0

http://stackoverflow.com/questions/4214155/wpf-easiest-way-to-move -image-to-x-y-programatically попробуйте это –

ответ

0

Любые изменения, внесенные в визуальные элементы приложения 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 
} 
+0

Я попробовал, он работает, но я не могу удалить и заменить предыдущие изображения (те, которые уже были показаны). Они все еще открыты холстом? почему на холсте (изображении) есть крючок на них? Я использую этот код для обновления uri: Uri newUri = new Uri (@inputA); Image.ImageSource = new BitmapImage (newUri); – user1094315

+0

Попробуйте canvas.Children.Clear() - если мой ответ помог, пожалуйста, поддержите или примите. – ColinE

+0

Это не сработало. Любой другой способ я могу очистить или удалить соединение между старыми изображениями и холстом? Спасибо за вашу помощь. – user1094315

0

ответ Coline является полезным, однако мы должны также быть в состоянии использовать FILESTREAM, как следовать, чтобы мы могли обновить или изменить изображения, которые ранее отображались:

      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; 

            } 
           } 
          } 
Смежные вопросы