2012-01-27 18 views
14

Voglio impostare un'immagine di sfondo per il mio modulo/finestra like this guy ma invece di un file di immagine su disco ho un System.Drawing.Bitmap in memoria.Ottieni ImageSource da Bitmap?

ho bisogno di fare qualcosa di simile:

this.Background = new ImageBrush(new BitmapImage(bmp)); 

Tranne BitmapImage non ci vorrà un Bitmap, né ImageBrush e non sono sicuro se tutti gli altri lo faranno. Ce n'è uno chiamato BitmapCacheBrush ma non so cosa faccia.

risposta

18

Non importa, l'ho capito.

public static Brush CreateBrushFromBitmap(Bitmap bmp) 
{ 
    return new ImageBrush(Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions())); 
} 

credit

+2

Avrai bisogno di importare e P/Invoke DeleteObject su quella maniglia da Bitmap.GetHBitmap() o sarai fuoriuscita gestisce GDI. Fare riferimento alla documentazione per maggiori informazioni. – Alan

+1

Come liberare mem: http://stackoverflow.com/a/1546121/378783 – watbywbarif

Problemi correlati