如何在WPF中从System.Drawing.Image创建ImageBrush?

bko*_*cic 6 c# wpf image

我在System.Drawing.Image对象中有图像,我需要从中创建一个ImageBrush对象(例如用于WPF中的Rectangle的Fill属性).我想应该有办法做到这一点,但我找不到一个.

kev*_*kev 14

      var image = System.Drawing.Image.FromFile("..."); // or wherever it comes from
      var bitmap = new System.Drawing.Bitmap(image);
      var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(),
                                                                            IntPtr.Zero,
                                                                            Int32Rect.Empty,
                                                                            BitmapSizeOptions.FromEmptyOptions()
            );
      bitmap.Dispose();
      var brush = new ImageBrush(bitmapSource);          
Run Code Online (Sandbox Code Playgroud)

然而,该解决方案不会释放句柄的存储器.有关如何删除内存泄漏的信息,请参阅WPF CreateBitmapSourceFromHBitmap()内存泄漏