c# image控件显示bitmap

//慢 1000ms
afterImg.Source = ToBitmapImage(bmp);
public BitmapImage ToBitmapImage(System.Drawing.Bitmap ImageOriginal)
   {
       BitmapImage bitmapImage = new BitmapImage();
       using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
       {
           bitmapImage.BeginInit();
           ImageOriginal.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
           bitmapImage.StreamSource = ms;
           bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
           bitmapImage.EndInit();
           bitmapImage.Freeze();
       }
       return bitmapImage;
   }

//快速 88ms

 public static class BitmapSourceConvert
  {
       /// <summary>
       /// Delete a GDI object
       /// </summary>
       /// <param name="o">The poniter to the GDI object to be deleted</param>
       /// <returns></returns>
       [DllImport("gdi32")]

       private static extern int DeleteObject(IntPtr o);
       /// <summary>
       /// Convert an Bitmap to a WPF BitmapSource. The result can be used in the Set Property of Image.Source
       /// </summary>
       /// <param name="image">Bitmap</param>
       /// <returns>The equivalent BitmapSource</returns>
       public static BitmapSource ToBitmapSource(System.Drawing.Bitmap image)
       {
           IntPtr ptr = image.GetHbitmap();//obtain the Hbitmap
           BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap
           (
               ptr,
               IntPtr.Zero,
               Int32Rect.Empty,
               System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
           );
           DeleteObject(ptr);//release the HBitmap
           return bs;
       }
   }
afterImg.Source = BitmapSourceConvert.ToBitmapSource(bmp);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值