绑定 Image.Source 到 System.Drawing.Image 不显示
Binding Image.Source to System.Drawing.Image not displaying
我正在生成一个 System.Drawing.Image
对象,我将其设置为绑定的 ViewModel 属性。
我知道图像生成正确,但它没有以 WPF 形式显示。 System.Drawing.Image
不是兼容的来源类型吗?
Image image = GetMyGeneratedImage();
var vm = _myViewModelFactory.CreateExport().Value;
vm.MyImage= image;
if (vm.ShowDialog(ShellView))
..
视图模型代码:
private System.Drawing.Image _myImage;
public Image MyImage
{
get { return _myImage; }
set { _myImage= value; }
}
XAML:
<Image Source="{Binding MyImage}"/>
WPF Image
控件的源不支持 System.Drawing.Image
。您必须将其转换为 BitmapSource
,并且没有可用于此转换的内置方法。
但解决方案可用:
[DllImport("gdi32")]
static extern int DeleteObject(IntPtr o);
public static BitmapSource ToBitmapSource(System.Drawing.Bitmap source)
{
IntPtr ip = source.GetHbitmap();
BitmapSource bs = null;
try
{
bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip,
IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(ip);
}
return bs;
}
参考:http://khason.net/blog/how-to-use-systemdrawingbitmap-hbitmap-in-wpf/
我正在生成一个 System.Drawing.Image
对象,我将其设置为绑定的 ViewModel 属性。
我知道图像生成正确,但它没有以 WPF 形式显示。 System.Drawing.Image
不是兼容的来源类型吗?
Image image = GetMyGeneratedImage();
var vm = _myViewModelFactory.CreateExport().Value;
vm.MyImage= image;
if (vm.ShowDialog(ShellView))
..
视图模型代码:
private System.Drawing.Image _myImage;
public Image MyImage
{
get { return _myImage; }
set { _myImage= value; }
}
XAML:
<Image Source="{Binding MyImage}"/>
WPF Image
控件的源不支持 System.Drawing.Image
。您必须将其转换为 BitmapSource
,并且没有可用于此转换的内置方法。
但解决方案可用:
[DllImport("gdi32")]
static extern int DeleteObject(IntPtr o);
public static BitmapSource ToBitmapSource(System.Drawing.Bitmap source)
{
IntPtr ip = source.GetHbitmap();
BitmapSource bs = null;
try
{
bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip,
IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(ip);
}
return bs;
}
参考:http://khason.net/blog/how-to-use-systemdrawingbitmap-hbitmap-in-wpf/