如何将System.Windows.Media.ImageSource转换为C#中的System.Drawing.Bitmap?
答案 0 :(得分:12)
它的老OP,但它仍然可以为其他人派上用场,因为它需要一些时间来找到没有dll互操作或剪贴板黑客的清洁解决方案。
这对我有用,你可以使用pngencoder在保存到文件或rtf流之前剪切图像大小
private System.Drawing.Image ImageWpfToGDI(System.Windows.Media.ImageSource image) {
MemoryStream ms = new MemoryStream();
var encoder = new System.Windows.Media.Imaging.BmpBitmapEncoder();
encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(image as System.Windows.Media.Imaging.BitmapSource));
encoder.Save(ms);
ms.Flush();
return System.Drawing.Image.FromStream(ms);
}
答案 1 :(得分:0)
请参阅HOW TO USE IMAGESOURCE (NO HANDLER) IN WINFORMS AS SYSTEM.DRAWING.BITMAP (HBITMAP):
如何轻松转换WinForms System.Drawing.Bitmap到WPF中 你从中学到了ImageSource 文章。今天,我会解释怎么做 相反。实际上,他只需要 就是从中提取处理程序 然而,BitmapSource就是这样的方法 不受支持,因此是唯一的 我们能做的只是复制像素 BitmapSource(或BitmapFrame)成 字节数组然后将它们复制到 HBitmap的指针。