2012-01-17 40 views
0

我在我的WPF窗體上有一個畫布,我需要在運行系統中運行一系列圖像。如何刷新畫布中的圖像?在Canvas中播放圖像序列

+0

http://stackoverflow.com/questions/4214155/wpf-easiest-way-to-move -image-to-x-y-以編程方式嘗試這個 – 2012-01-17 06:12:37

回答

0

您對WPF應用程序中的可視元素所做的任何更改都將反映在視圖中。您不需要調用Refresh方法來使更改可見。對於您的應用程序,您可以創建一個DispatcherTimer,然後更改您的Image.Source或在每個Tick上替換您的Image

例如:

<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 2012-01-17 20:07:33

+0

嘗試canvas.Children.Clear() - 如果我的回答有幫助,請註冊或接受。 – ColinE 2012-01-17 20:24:21

+0

它沒有工作。任何其他方式,我可以清除或刪除舊的圖像和畫布之間的連接?謝謝你的幫助。 – user1094315 2012-01-17 20:51:38

0

可啉的答案是有幫助的。然而,我們還需要能夠使用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; 

            } 
           } 
          }