2012-01-27 9 views
14

Quiero establecer una imagen de fondo para mi formulario/ventana like this guy pero en lugar de un archivo de imagen en el disco tengo un System.Drawing.Bitmap en la memoria.Obtener ImageSource de mapa de bits?

tengo que hacer algo como esto:

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

Excepto BitmapImage no va a tomar un Bitmap, ni tampoco ImageBrush y no estoy seguro de si alguno de los otros lo harán. Hay uno llamado BitmapCacheBrush pero no sé lo que hace.

Respuesta

18

No importa, lo descubrí.

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

credit

+2

Tendrá que importar y P/Invoke DeleteObject en ese mango de Bitmap.GetHBitmap() o se le filtra la GDI maneja. Consulte la documentación para más información. – Alan

+1

Cómo liberar mem: http://stackoverflow.com/a/1546121/378783 – watbywbarif

Cuestiones relacionadas