我想在运行时更改背景属性,我必须为它设置一个 ImageBrush。我在我的项目中添加了一些图像作为资源,现在我可以将它们用作 System.Drawing.Bitmap。
如何将 System.Drawing.Bitmap 转换为 ImageBrush ?
如果您使用代码隐藏来设置它,您可以这样做:
BitmapImage img;
// get bitmapimage from resources and assign to img
ImageBrush brush = new ImageBrush();
brush.ImageSource = img;
myControl.Background = brush;
如果您使用数据绑定,则需要实现 ValueConverter
从如何在 WPF 中从 System.Drawing.Image 创建 ImageBrush?:
var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions()
);
bitmap.Dispose();
var brush = new ImageBrush(bitmapSource);
“但是,此解决方案不会释放句柄的内存。有关如何消除内存泄漏的信息,请参阅WPF CreateBitmapSourceFromHBitmap() 内存泄漏”