WPFで画像を扱おうとしたら、とても種類が多いことがわかったので、相互コンバーターを作ることにした。
まず最初は定番のSystem.Drawing.BitmapからSystem.Windows.Controls.Imageへの変換。
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
public static System.Windows.Controls.Image
SystemDrawingBitmap2SystemWindowsControlsImage(System.Drawing.Bitmap original) {
IntPtr hBitmap = original.GetHbitmap();
var newimage = new System.Windows.Controls.Image();
try {
newimage.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally {
DeleteObject(hBitmap);
}
return newimage;
}