Converti System.Windows.Media.ImageSource in System.Drawing.Bitmap

Come posso convertire System.Windows.Media.ImageSource in System.Drawing.Bitmap in C #?

il suo vecchio OP, ma può ancora tornare utile per alcune altre persone, poiché ci è voluto un po ‘di tempo per trovare una soluzione più pulita senza gli hacker di interop o clipboard.

questo ha funzionato per me, è ansible utilizzare pngencoder per tagliare le dimensioni dell’immagine prima di salvarle in file o in rtf stream

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); } 

Vedere COME UTILIZZARE IMAGESOURCE (NO HANDLER) IN WINFORMS COME SYSTEM.DRAWING.BITMAP (HBITMAP) :

Come convertire facilmente WinForms System.Drawing.Bitmap in ImageSource WPF che hai imparato da questo articolo. Oggi spiegherò come farlo in modo contrario. In realtà, tutto ciò che deve fare è estrarre il gestore da BitmapSource, tuttavia, tale approccio non è supportato, quindi l’unica cosa che possiamo fare è copiare i pixel di BitmapSource (o BitmapFrame) nell’array di byte e quindi copiarli nel puntatore del HBitmap.