2014-02-05 103 views
0

我正在使用設備顯示圖像的winform項目。 的問題是,我從C#的winform的C#WPF轉換代碼,我與顯示圖像將多個圖像加載到wpf圖像控件中

這是在winform工作正常代碼的代碼掙扎。

void Ps_Sample_Apl_CS_ShowSilhouette(MemoryStream buff) 
{ 
    System.Drawing.Image img = System.Drawing.Image.FromStream(buff); 
    img.RotateFlip(RotateFlipType.RotateNoneFlipX); 
    ImagePic.Image = img; 
    return; 
} 

這是我的代碼,我嘗試以顯示WPF

void Ps_Sample_Apl_CS_ShowSilhouette(MemoryStream buff) 
{ 
    System.Drawing.Image img = System.Drawing.Image.FromStream(buff); 

    BitmapImage myBitmapImage = new BitmapImage(); 
    myBitmapImage.BeginInit(); 
    myBitmapImage.StreamSource = buff; 
    //myBitmapImage.UriSource = new Uri(img.ToString()); 
    //myBitmapImage.DecodePixelWidth = 200; 
    ImagePic.Source = myBitmapImage; 
    myBitmapImage.EndInit(); 

    return; 
} 

我應該怎麼做的圖片,但不工作?

+0

myBitmapImage.EndInit(); ImagePic.Source = myBitmapImage; –

+0

在'myBitmapImage.BeginInit();'後面加'myBitmapImage.CacheOption = BitmapCacheOption.OnLoad;'並用'myBitmapImage.EndInit();'切換'ImagePic.Source = myBitmapImage;' –

+0

謝謝我做到了, 'myBitmapImage.CacheOption = BitmapCacheOption.OnLoad;'並用'myBitmapImage.EndInit();'改變了'ImagePic.Source = myBitmapImage;'的位置,但在myBitmapImage.EndInit();後不起作用'myBitmapImage.BeginInit();' –

回答

0

的方法應該是這樣的:

void Ps_Sample_Apl_CS_ShowSilhouette(MemoryStream buff) 
{ 
    BitmapImage bitmapImage = new BitmapImage(); 
    bitmapImage.BeginInit(); 
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad; 
    bitmapImage.StreamSource = buff; 
    bitmapImage.EndInit(); 
    ImagePic.Source = bitmapImage; 
} 
+0

這正是我說的,但它似乎不起作用(這也讓我感到吃驚) –

+0

謝謝你們兩個人,我不知道爲什麼不工作,我使用了與你相同的代碼。把我mato,大聲笑 –

+0

我找到了原因,因爲即時通訊嘗試從另一個線程更新控件。 –