精华内容
下载资源
问答
  • QRCoder生成的是Bitmap,在wpf中需要转换成ImageSource才能显示。 之前的转换方式是: IntPtr hBitmap = qrCodeImage.GetHbitmap(); ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBit...

    之前有个需求是在WPF中生成二维码,用的是QRCoder。

    QRCoder生成的是Bitmap,在wpf中需要转换成ImageSource才能显示。

    之前的转换方式是:

     IntPtr hBitmap = qrCodeImage.GetHbitmap();
     ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    hBitmap,
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());

    之后客户用了一段时间,出现内存不足的情况,找了好久,才找到原来是这里特别耗内存,每生成一次会占用100多M。

    研究了下,是因为没有释放的问题。修改了下终于解决了这个问题。

            [DllImport("gdi32.dll", EntryPoint = "DeleteObject")]
            [return: MarshalAs(UnmanagedType.Bool)]
            public static extern bool DeleteObject([In] IntPtr hObject);
    
            public ImageSource ImageSourceForBitmap(Bitmap bmp)
            {
                var handle = bmp.GetHbitmap();
                try
                {
                    ImageSource newSource = Imaging.CreateBitmapSourceFromHBitmap(handle, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    
                    DeleteObject(handle);
                    return newSource;
                }
                catch (Exception ex)
                {
                    DeleteObject(handle);
                    return null;
                }
            }

    单独只用DeleteObject效果也不是特别好,最后再手动加个GC.Collect(),内存没有再出现疯狂增长。

    转载于:https://www.cnblogs.com/czly/p/10234192.html

    展开全文
  • WPF Bitmap转imagesource

    2018-08-30 13:09:00
    WPF Bitmap转imagesource 原文:WPF Bitmap转imagesource因为WPF中不支持直接显示bitmap格式图片,因此需要对bitmap转换成imagesource再显示。 [System.Runtime.InteropServices.DllImport("gdi32....
    原文:WPF Bitmap转imagesource

    因为WPF中不支持直接显示bitmap格式图片,因此需要对bitmap转换成imagesource再显示。

    [System.Runtime.InteropServices.DllImport("gdi32.dll")]
    public static extern bool DeleteObject(IntPtr hObject);
    
    public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)
    {
        IntPtr hBitmap = bitmap.GetHbitmap();
        ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            hBitmap,
            IntPtr.Zero,
            Int32Rect.Empty,
            BitmapSizeOptions.FromEmptyOptions());
    
        if (!DeleteObject(hBitmap))
        {
            throw new System.ComponentModel.Win32Exception();
        }
        return wpfBitmap;
    }

    需要及时释放hBitmap,否则内存会很快占满。

    posted on 2018-08-30 13:09 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9559577.html

    展开全文
  • WPF Bitmap转Imagesource

    2019-04-29 11:42:00
    WPF Bitmap转Imagesource 原文:WPF Bitmap转Imagesource var imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero,Int32Rect.Empty,B...
    原文:WPF Bitmap转Imagesource

    var imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());

    替换bmp

    posted on 2019-04-29 11:42 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/10789529.html

    展开全文
  • WPF 中的Imagesource

    2013-02-19 17:09:45
    WPF中的ImageSource详解,给WPF中自动生成代码的兄弟们看看
  • WPF ImageSource

    千次阅读 2012-08-28 11:14:06
    A little How-to put an image from embedded resources into your WPF application. I have found it very useful especially when working with ListView and creating value converters for it. My solution f

    A little How-to put an image from embedded resources into your WPF application. I have found it very useful especially when working with ListView and creating value converters for it.

    My solution for this examples looks like that:

    ImageSourceExampleSolution

     

    1) ImageSource in XAML:

    <Image Name="image1" 
    Source="/ImageSourceExample;component/Assets/flower.jpg" />

    Where ImageSourceExample is the assembly name.

    2) ImageSource in c#

    ImageSourceConverter imgConv = new ImageSourceConverter();
    string path = "pack://application:,,/Assets/flower.jpg"
    ImageSource imageSource = (ImageSource) imgConv.ConvertFromString(path);
    image1.Source = imageSource;

    To read more about pack URIs in WPF look here.

    Monika


    http://weblogs.asp.net/monikadyrda/archive/2008/12/13/wpf-imagesource.aspx


    展开全文
  • WPF开发,Image与ImageSource

    千次阅读 2016-10-12 16:32:27
    GUI调用dll中的函数A改变后台绑定数据,如果前台为Image,后台为ImageSource。 在更新时,不能将dll中的ImageSource直接赋值给界面的后台对象的ImageSource,要将DLL数据存为Bitmap,在界面转换成ImageSource。 ...
  • WPF Image Source 设置相对路径图片 原文:WPF Image Source 设置相对路径图片 BitmapImage bt = new BitmapImage(new Uri("Images\\3_u10484.png", UriKind.Relative));this.Img1.Source= bt; ...
  • winform下Bitmap转wpfImageSource
  • WPF Image控件中的ImageSource与Bitmap的互相转换 原文: WPF Image控件中的ImageSource与Bitmap的互相转换  1.从bitmap转换成ImageSource [DllImport("gdi32.dll", SetLast...
  • Wpf ImageSource对象与Bitmap对象的互相转换 原文:Wpf ImageSource对象与Bitmap对象的互相转换 Bitmap to ImageSource 将得到的Bitmap对象转换为wpf常用的Imag...
  • 主要思路:先将Image转化为Bitmap,然后将Bitmap转化为BitmapSource或者是BitmapImage对象 1、写个静态方法,两种方法都可以 public class ImageWork { [DllImport("gdi32")] static extern int DeleteObject...
  • 当使用image source绑定相对路径图片资源时,出现问题...然后在Xaml前台添加路径绑定:ImageSource="/ScenarioNS;component/icons/obj_AreaTarget.png" /ScenarioNS; :这是你的工程文件的名称,或者说是你的图片对...
  • WPF中的imagesource

    2013-10-11 13:33:00
    [转载]ImageSource的使用心得 很多时候,我们会使用图片来装饰UI,比如作为控件背景等。 而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片 对于这两种形式的图片,在WPF中,使用...
  • <div><p>Couldn'... What would be the best (fastest) way to get an ImageSource instance from an <code>Image<Rgba32></code>?</p><p>该提问来源于开源项目:SixLabors/ImageSharp</p></div>
  • WPF中style的Image或ImageBrush中的Source和ImageSource由调用控件传入的方法 在WPF开发时,很多控件的Style格式相同,但是其中的图片需要由每个调用的控件来传入决定, 尝试过之间将Source和ImageSource绑定为...
  • [DllImport("gdi32.dll", SetLastError = true)] private static extern bool DeleteObject(IntPtr hObject); /// /// 从bitmap转换成ImageSource /// /// /// ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 711
精华内容 284
关键字:

imagesourcewpf