2012-01-27 30 views
14

Tôi muốn đặt hình nền cho biểu mẫu/cửa sổ like this guy nhưng thay vì tệp hình ảnh trên đĩa, tôi có một bộ nhớ System.Drawing.Bitmap.Lấy ImageSource từ Bitmap?

tôi cần phải làm một cái gì đó như thế này:

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

Trừ BitmapImage sẽ không mất một Bitmap, cũng sẽ ImageBrush và tôi không chắc chắn nếu có của những người khác sẽ làm. Có một cái gọi là BitmapCacheBrush nhưng tôi không biết điều đó làm gì.

Trả lời

18

Nevermind, tôi đã tìm ra.

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

credit

+2

Bạn sẽ cần phải nhập khẩu và P/Invoke DeleteObject trên tay cầm mà từ Bitmap.GetHBitmap() hoặc bạn sẽ bị rò rỉ GDI xử lý. Tham khảo tài liệu để biết thêm thông tin. – Alan

+1

Cách giải phóng mem: http://stackoverflow.com/a/1546121/378783 – watbywbarif

Các vấn đề liên quan