2010-06-04 61 views
1

我有一個有很多System.Drawing.Image資源的DLL,我已經將其包裝到靜態屬性中,以便我可以動態更新它們。在WPF應用程序中顯示WinForm圖像

我想在WPF應用程序中通過xaml使用圖像,但唯一可以通過代碼手動完成的方式是通過代碼完成。

有沒有辦法將winform轉換爲xaml中的靜態屬性的wpf圖像轉換?

回答

5

您可以使用轉換器直接綁定到您的圖像。這裏是一個窗口爲例:

<Window.Resources> 
    <WinForms2WPFImageConverter x:Key="WF2WPFDrawingConverter" /> 
</Window.Resources> 

...

This SO question有圖紙轉換器,我適應這裏作爲一個ValueConverter。

public class WinForms2WPFImageConverter : IValueConverter { 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     System.Drawing.Image i = (System.Drawing.Image) value; 
     using (MemoryStream drawingStream = new MemoryStream()) 
     { 

      i.Save(drawingStream); 

      i.Seek(0, SeekOrigin.Begin); 

      return System.Windows.Media.Imaging.BitmapFrame.Create(drawingStream); 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
      throw new InvalidOperationException(); 
    } 
} 

當然,您需要考慮資源聲明中的命名空間。

爲了充分利用INotifyPropertyChanged(或依賴項屬性),我建議不要使用靜態屬性,以便在屬性指向其他圖像時自動更改顯示。

(注:這是類型化的,而不是從VS複製,所以有可能是一個語法錯誤的地方)

1

你可以使用WPF中的方法綁定到你的圖片。下面是一個例子,一個鏈接

http://microsoftdotnetsolutions.blogspot.com/2016/07/convert-winforms-image-to-wpf.html

+0

雖然評論的限制,而沒有足夠的聲望是可以理解的,請在發佈評論爲避免答案。如果你知道你有這個問題的答案,請詳細闡述它,並寫出尊重[StackOverflow指導方針](http://stackoverflow.com/help/how-to-answer)來編寫好的答案。 – user3078414 2016-07-20 17:34:06

+0

雖然評論限制雖然沒有足夠的聲望是可以理解的,但請不要發表評論作爲答案。如果你知道你有這個問題的答案,請編輯它,詳細說明[StackOverflow準則](http://stackoverflow.com/help/how-to-answer),以便編寫出色的答案。 – user3078414 2016-07-20 17:36:02

相關問題