2012-01-27 12 views
14

Chcę ustawić obraz tła dla mojego formularza/okna like this guy, ale zamiast pliku obrazu na dysku mam w pamięci System.Drawing.Bitmap.Uzyskaj źródło obrazu z bitmapy?

muszę zrobić coś takiego:

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

wyjątkiem BitmapImage nie zajmie Bitmap, ani woli ImageBrush i nie jestem pewien, czy ktokolwiek inny będzie. Jest jeden o nazwie BitmapCacheBrush, ale nie wiem, co to oznacza.

Odpowiedz

18

Nieważne, rozgryzłem to.

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

credit

+2

Musisz importować i P/Invoke DeleteObject tego uchwytu z Bitmap.GetHBitmap() lub będziesz wyciekające GDI obsługuje. Więcej informacji można znaleźć w dokumentacji. – Alan

+1

Jak zwolnić pamięć: http://stackoverflow.com/a/1546121/378783 – watbywbarif

Powiązane problemy