2014-08-29 172 views
2

我有一個問題,我認爲還沒有被其他衆多WPF圖像加載問題所覆蓋。我正在掃描幾張圖片並將它們傳遞給「預覽頁面」。預覽頁面使用圖像縮略圖,並通過生成的位圖顯示打印輸出的樣子。動態WPF圖像加載問題

對我而言,奇怪的是,如果我第一次運行該程序,它會正常工作。在到達過程結束並點擊「重新開始」時,預覽將返回空白。我在一個將位圖保存爲隨機文件名的方法中創建BitmapImage,所以我不相信第二次鎖定文件。另外,如果我去查看通過資源管理器創建的臨時文件,它會被正確繪製,因此我知道正確的數據已經到達它。

最後,當我離開此頁面時,我正在清除必要的數據。我真的很困惑,任何幫助,將不勝感激。

//Constructor 
public Receipt_Form() { 
    InitializeComponent(); 

    printData = new List<Object>(); 
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 
} 

void MainWindow_Loaded(object sender, RoutedEventArgs e) { 
    // populates global variable fileName 
    var task = System.Threading.Tasks.Task.Factory.StartNew(() => outputToBitmap());   task.ContinueWith(t => setImage(fileName), 
    System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext()); 

    // I started the image creation in a separate thread because I 
    // thought it may be blocking the UI thread, but it didn't matter 
} 

private void setImage(string imageURI) { 
    BitmapImage image; 

    using (FileStream stream = File.OpenRead(imageURI)) { 
     image = new BitmapImage(); 
     image.BeginInit(); 
     image.StreamSource = stream; 
     image.CacheOption = BitmapCacheOption.OnLoad; 
     image.EndInit(); 
    } 

    receiptPreview.Source = image; 
    //this works the first iteration but not the second, though the temp file is created successfully 
} 
+0

保存臨時文件的意義在哪裏?爲什麼不直接從'outputToBitmap'方法返回創建的位圖? – Clemens 2014-08-29 15:55:45

+0

我最初是這麼做的,但爲了調試的目的,我將它改爲當前狀態(查看創建的圖像)。 – wbt11a 2014-08-29 15:57:21

+0

究竟是什麼意思「重新開始」?這是你程序中的一個特殊功能嗎? – Clemens 2014-08-29 16:10:44

回答

-2

發現問題 - 現代UI容器在離開頁面時已被清除。