从Bitmap获取ImageSource?

mpe*_*pen 14 c# wpf

我想为我的表单/窗口设置一个背景图像,就像这个人而不是磁盘上的图像文件我有一个System.Drawing.Bitmap内存.

我需要做这样的事情:

this.Background = new ImageBrush(new BitmapImage(bmp));
Run Code Online (Sandbox Code Playgroud)

除了BitmapImage不会采取Bitmap,也不会ImageBrush,我不确定是否会有其他任何人.有一个叫,BitmapCacheBrush但我不知道那是做什么的.

mpe*_*pen 18

没关系,我明白了.

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

信用

  • 你需要从Bitmap.GetHBitmap()导入和P/Invoke该句柄上的DeleteObject,否则你将泄漏GDI句柄.有关详细信息,请参阅文档. (2认同)