2012-01-27 8 views
14

Benim formu/pencerenin like this guy için bir arka plan görüntüsü ayarlamak için ancak bunun yerine diskte bir görüntü dosyasının ben bellekte bir System.Drawing.Bitmap var istiyorum. BitmapImage hariçBitmap'ten ImageSource alın?

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

bir Bitmap sürmez, ne olacak ImageBrush ve başkalarına herhangi olacak olmadığından emin değilim:

Böyle bir şey yapmak gerekir. Orada BitmapCacheBrush birini deniyor ama ne işe yarar, bilmiyorum.

cevap

18

Boşver, ben anladım.

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

credit

+2

Sen Bitmap.GetHBitmap o sap üzerinde ithalat ve P/çağır NesneSil gerekir() veya GDI kolları sızıntı olacak. Daha fazla bilgi için belgelere bakın. – Alan

+1

özgür Nasıl mem: http://stackoverflow.com/a/1546121/378783 – watbywbarif