我有一個有很多System.Drawing.Image資源的DLL,我已經將其包裝到靜態屬性中,以便我可以動態更新它們。在WPF應用程序中顯示WinForm圖像
我想在WPF應用程序中通過xaml使用圖像,但唯一可以通過代碼手動完成的方式是通過代碼完成。
有沒有辦法將winform轉換爲xaml中的靜態屬性的wpf圖像轉換?
我有一個有很多System.Drawing.Image資源的DLL,我已經將其包裝到靜態屬性中,以便我可以動態更新它們。在WPF應用程序中顯示WinForm圖像
我想在WPF應用程序中通過xaml使用圖像,但唯一可以通過代碼手動完成的方式是通過代碼完成。
有沒有辦法將winform轉換爲xaml中的靜態屬性的wpf圖像轉換?
您可以使用轉換器直接綁定到您的圖像。這裏是一個窗口爲例:
<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複製,所以有可能是一個語法錯誤的地方)
你可以使用WPF中的方法綁定到你的圖片。下面是一個例子,一個鏈接
http://microsoftdotnetsolutions.blogspot.com/2016/07/convert-winforms-image-to-wpf.html
雖然評論的限制,而沒有足夠的聲望是可以理解的,請在發佈評論爲避免答案。如果你知道你有這個問題的答案,請詳細闡述它,並寫出尊重[StackOverflow指導方針](http://stackoverflow.com/help/how-to-answer)來編寫好的答案。 – user3078414 2016-07-20 17:34:06
雖然評論限制雖然沒有足夠的聲望是可以理解的,但請不要發表評論作爲答案。如果你知道你有這個問題的答案,請編輯它,詳細說明[StackOverflow準則](http://stackoverflow.com/help/how-to-answer),以便編寫出色的答案。 – user3078414 2016-07-20 17:36:02