Преобразование System.Windows.Media.ImageSource в System.Drawing.Bitmap - PullRequest
10 голосов
/ 29 июля 2009

Как я могу преобразовать System.Windows.Media.ImageSource в System.Drawing.Bitmap в C #?

Ответы [ 2 ]

13 голосов
/ 23 февраля 2012

его старый OP, но все же он может пригодиться для некоторых других людей, так как потребовалось некоторое время, чтобы найти более чистое решение без вмешательства dll interop или clipboard.

это сработало для меня, вы можете использовать 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);
}
0 голосов
/ 29 июля 2009

Пожалуйста, смотрите КАК ИСПОЛЬЗОВАТЬ ИЗОБРАЖЕНИЕ (БЕЗ ГЕНДЕРА) В WINFORMS В СИСТЕМЕ. DRAWING.BITMAP (HBITMAP) :

Как легко конвертировать WinForms System.Drawing.Bitmap в WPF ImageSource вы узнали из этого статья. Сегодня я объясню, как это сделать это наоборот. На самом деле, все, что он должен сделать, это извлечь обработчик из BitmapSource, однако, такой подход не поддерживается, поэтому единственное мы можем сделать, это просто скопировать пиксели BitmapSource (или BitmapFrame) в байтовый массив, а затем скопировать их в указатель HBitmap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...