精华内容
下载资源
问答
  • WPF 中的Imagesource

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

    万次阅读 2018-06-27 16:53:12
    WPF中的Image控件Source的设置1.XAML中简单的方式(Source="haha.png");image控件的Source设置为相对路径后(Source="haha.png")运行不能显示解决方案:当Source设置为相对路径后(Source="...

    WPF中的Image控件Source的设置

    1.XAML中

    简单的方式(Source="haha.png");

    image控件的Source设置为相对路径后(Source="haha.png")运行不能显示

    解决方案:当Source设置为相对路径后(Source="haha.png")改成“/WpfApplication1;component/haha.png”。

    2.逻辑代码中

    img.Source = new BitmapImage(new Uri("pack://application:,,,/Images/haha.jpg"));
    //或
    img.Source = new BitmapImage(new Uri("pack://SiteOfOrigin:,,,/Images/haha.jpg"));

    下面讲解这两种用法(参考博客http://www点suchso.com/projecteactual/wpf-jiaocheng-tupian-lujing-uri.html)

    今天就来详细说明wpf图片资源的路径问题和如何设置?

    一开始我在后台直接复制图片路径是物理路径:

    b.ImageSource = new BitmapImage(new Uri("../Themes/ZCThemes/skin/icon/card_unchoose.png", UriKind.RelativeOrAbsolute));

    在visual studio 2013中是没有问题的。但是发布后,单独运行exe就出错了。

     

    这个就涉及到wpf的新协议:   WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。

    其中较为常见的情况是用Uri加载图像。Uri表达式的一般形式为:协议+授权+路径

         协议:pack://
         授权:有两种。一种用于访问编译时已经知道的文件,用application:///。一种用于访问编译时不知道、运行时才知道的文件,用siteoforigin:///。在这里加载图片时,我们选用前者,即application:///,但是书写时候,我们一般用逗号代替斜杠,也就是改写作application:,,,。
         路径:分为绝对路径和相对路径。这里我们选用相对路径,普适性更强。

         下面,我们举一个简单的例子:
              pack://application:,,,/images/my.jpg
         当然,WPF默认Uri设置有pack://application:,,,,所以我们也可以直接将其写作:
              /images/my.jpg
         后边写例子程序时,为了让读者更好的了解Uri,我们都采用完整的Uri写法。

         下面在讲讲装载图片的两种方式,一种用XAML引用资源,一种用代码引用资源。

         用XAML引用资源:
              <Image Source="pack://application:,,,/images/my.jpg"/>

         用代码引用资源:
              Image img;
              img.Source=new BitmapImage(new Uri("pack://application:,,,/images/my.jpg"),UriKind.Relative);

    删除XAML中的Source属性,在后台为两个图片控件设置Source属性。有如下三种WPF资源路径方式。

    第一种

    imgContent.Source = new 
    BitmapImage(new Uri("Content.jpg", UriKind.Relative));  
    
    imgResource.Source = new 
    BitmapImage(new Uri("Resource.jpg", UriKind.Relative)); 

    第二种

    imgContent.Source = new 
    BitmapImage(new Uri("pack://application:,,,/Content.jpg"));  
    
    imgResource.Source = new 
    BitmapImage(new Uri("pack://application:,,,/Resource.jpg")); 

    第三种

    imgContent.Source = new 
    BitmapImage(new Uri("pack://SiteOfOrigin:,,,/Content.jpg")); 

    第一种和第二种都可以访问相对WPF资源路径的Resource和Content资源。第三种方式可以访问网站运行目录下的Content资源文件以及完全松散的文件。完全松散的文件指那些没有添加到项目中,只是拷贝在程序目录中的文件。

    应用程序根本不知道它的存在。pack://application:,,,/Content.jpg表示当前项目的资源。它是pack://application:,,,/DllName;Component/Content.jpg的简写。将DllName替换成其他程序集,就可以访问其他程序集的资源。

    pack://SiteOfOrigin:,,,/Content.jpg表示从部署位置访问文件。

    pack URI格式是XML文件规范的一部分,具体格式如下 pack://packageURI/partPath。PackageURI实际上是在URI中放一个URI,它是把反斜杠都变成了逗号。packageURI的WPF资源路径可以志向一个XPS文档,例如file : /// c: /Document . xps会被编码为file:...c:,Document.xps。在WPF程序中有两种URI系统是特别处理的:

    siteOfOrigin:/// 编码后siteOfOrigin:,,,

    application:/// 编码后application:,,,

    3个逗号其实是反斜杠编码过来的。

     

    下面为参考的另外一篇博客(原文

    BitmapImage imagetemp = new BitmapImage(new Uri("imgPath", UriKind.Absolute));

    image1.Source = imagetemp;

    其中imageBrush.ImageSource的类型为ImageSource,而ImageSource是个抽象类, 因此我们不能直接使用它,而是使用它的子类来代替,查阅MSDN,可以看到它们的继承关系:

    System.Windows.Media.ImageSource

       System.Windows.Media.DrawingImage

          System.Windows.Media.Imaging.BitmapSource

    二、存在于内存中的图片  对于只存在于内存中的图片,用以上方法就显得无能为力了,我们应该另寻他法,下面介绍一种方法: 先看代码:

    //此处图片从文件中读入用以模拟内存中的图片

    System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");

    MemoryStream stream = new MemoryStream();

    bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

    ImageBrush imageBrush = new ImageBrush();

    ImageSourceConverter imageSourceConverter = new ImageSourceConverter();

    imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);

    button.Background = imageBrush;

    其中bitmap即是存在于内存中的Bitmap类型图片,此处使用直接加载本地图片文件模拟。 步骤是先将它保存到流中,再使用ImageSourceConverter 类的ConvertFrom方法从流中得到我们需要的图片


    转载自http://www.cnblogs.com/g120/p/4688101.html

    展开全文
  • wpfimagesource 路径设置问题

    千次阅读 2017-11-11 23:33:49
    今天发现一个项目中Resources.resx中的图片有点乱,手贱去整理,把所有图片从项目中移除再重新添加,但是启动之后就会报错 错误信息:“System.Windows.Markup.XamlParseException”类型的第一次机会异常在 ...

      今天发现一个项目中Resources.resx中的图片有点乱,手贱去整理,把所有图片从项目中移除再重新添加,但是启动之后就会报错

    错误信息:“System.Windows.Markup.XamlParseException”类型的第一次机会异常在 PresentationFramework.dll 中发生,

    但是检查之后发现路径是对的~~~找了老半天,发现图片中的属性要修改,右击“解决方案资源管理器”中添加到项目中的图片,选择“属性”->"生成操作"中的Resource

    展开全文
  • wpf 获取Image的图片并保存到本地 var encoder = new PngBitmapEncoder (); encoder.Frames.Add (BitmapFrame.Create((BitmapSource)image.Source)); FileStream file = new FileStream ("../../102.png",FileMode...

    wpf 获取Image的图片并保存到本地

    var encoder = new PngBitmapEncoder ();
    encoder.Frames.Add (BitmapFrame.Create((BitmapSource)image.Source));
    FileStream file = new FileStream ("../../102.png",FileMode.Create);
    encoder.Save (file);
    file.Close ();

    注:FileStream如果没有Close关闭,那么就会写入文件失败,图片0kb,也不能正常显示图片。

     

     

     

     

    展开全文
  • 可以将svg文件转化成image控件可承载的ImageSource数据类型(注:需要在NuGet里面在下载安装一个svg.dll包,否则不能使用)
  • System.Drawing.Image转化为WPFImageSource

    千次阅读 2019-10-30 14:22:30
    主要思路:先将Image转化为Bitmap,然后将Bitmap转化为BitmapSource或者是BitmapImage对象 1、写个静态方法,两种方法都可以 public class ImageWork { [DllImport("gdi32")] static extern int DeleteObject...

    主要思路:先将Image转化为Bitmap,然后将Bitmap转化为BitmapSource或者是BitmapImage对象

    1、写个静态方法,两种方法都可以

    public class ImageWork
    {
    
           [DllImport("gdi32")]
            static extern int DeleteObject(IntPtr o);
            /// <summary>
            /// Bitmap->BitmapSource
            /// </summary>
            /// <param name="bitmap"></param>
            /// <returns></returns>
            public static BitmapSource getBitMapSourceFromBitmap(Bitmap bitmap)
            {
                IntPtr intPtrl = bitmap.GetHbitmap();
                BitmapSource bitmapSource =       System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(intPtrl,
                    IntPtr.Zero, 
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
                DeleteObject(intPtrl);
                return bitmapSource;
            }
    
    
            /// <summary>
            ///  Bitmap --> BitmapImage
            /// </summary>
            /// <param name="bitmap"></param>
            /// <returns></returns>
            public static BitmapImage BitmapToBitmapImage(Bitmap bitmap)
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    bitmap.Save(stream, ImageFormat.Bmp);
                    stream.Position = 0;
                    BitmapImage result = new BitmapImage();
                    result.BeginInit();
                    result.CacheOption = BitmapCacheOption.OnLoad;
                    result.StreamSource = stream;
                    result.EndInit();
                    result.Freeze();
                    return result;
                }
            }
    
    }
    
    
    

    2、新建一个Bitmap对象,调用该方法。

    processImage是一个System.Drawing.Image对象,我们将其转化为BitmapSource即可

     

               Bitmap bmp = new Bitmap(processImage); // get bitmap
                System.Windows.Media.Imaging.BitmapSource bmpResource = ImageWork.getBitMapSourceFromBitmap(bmp);
                targetImg.Source = bmpResource;

    或者

                Bitmap bmp = new Bitmap(processImage); // get bitmap
                BitmapImage bmpResource = ImageWork.BitmapToBitmapImage(bmp);
                targetImg.Source = bmpResource;
    

     

    展开全文
  • wpf image source绑定相对路径方法

    千次阅读 2019-11-23 19:51:40
    当使用image source绑定相对路径图片资源时,出现问题...然后在Xaml前台添加路径绑定:ImageSource="/ScenarioNS;component/icons/obj_AreaTarget.png" /ScenarioNS; :这是你的工程文件的名称,或者说是你的图片对...
  • winform下Bitmap转wpfImageSource
  • BitmapSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); if (!DeleteObject(hBitmap))//...
  • 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 Image控件 Source绑定路径方法

    万次阅读 2018-11-13 21:05:50
    最近在做WPF项目时,要通过Image 来添加图片显示,使用其ImageSource属性来设置image图片的路径进行绑定。 最初用的绝对路径进行绑定,没有什么问题,只要将图片所在的绝对路劲复制粘贴就好了。 但是,当整个项目的...
  • WPFImage控件Source属性的相对路径和绝对路径问题的开发经验总结,亲测通过!
  • WPF中style的Image或ImageBrush中的Source和ImageSource由调用控件传入的方法 在WPF开发时,很多控件的Style格式相同,但是其中的图片需要由每个调用的控件来传入决定, 尝试过之间将Source和ImageSource绑定为...
  • WPF开发,Image与ImageSource

    千次阅读 2016-10-12 16:32:27
    GUI调用dll中的函数A改变后台绑定数据,如果前台为Image,后台为ImageSource。 在更新时,不能将dll中的ImageSource直接赋值给界面的后台对象的ImageSource,要将DLL数据存为Bitmap,在界面转换成ImageSource。 ...
  • 在资源文件中定义转换器,把字符串转换为ImageSouce类型 <Window.Resources> <local:StringToImageSourceConverter x:Key="MyImageConverter">...Image Source="{Binding Path=ImgSource,.
  • QRCoder生成的是Bitmap,在wpf中需要转换成ImageSource才能显示。 之前的转换方式是: IntPtr hBitmap = qrCodeImage.GetHbitmap(); ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBit...
  • WPF Image Base64String 互转 Demo
  • WPF中的imagesource

    2013-10-11 13:33:00
    [转载]ImageSource的使用心得 很多时候,我们会使用图片来装饰UI,比如作为控件背景等。 而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片 对于这两种形式的图片,在WPF中,使用...
  • 将得到的Bitmap对象转换为wpf常用的Imagesource对象 BitmapSource bs = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());得
  • WPF代码设置Image控件Source

    千次阅读 2013-08-29 17:47:07
    在XAML中设置Image Source很简单,直接在该Image.Source节点赋值Uri路径即可,而用C#代码实现时,虽然思路是一样的,不过还是有一些区别,具体如下: Image img=new Image(); BitmapImage bmp=new BitmapImage(); ...
  • 原文:WPF Image Source 设置相对路径图片  BitmapImage bt = new BitmapImage(new Uri("Images\\3_u10484.png", UriKind.Relative));this.Img1.Source = bt;  
  • ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); if (!DeleteObject(hBitmap)) ...
  • 最近接替同事一个WPF的项目,之前...ImageBrush ImageSource="images/login.jpg" />找不到资源; “System.Windows.Markup.XamlParseException”类型的第一次机会异常在 PresentationFramework.dll 中发生; 引...
  • WPF 中的image控件的Source如何赋值

    千次阅读 2017-01-23 20:51:43
    Image image=new Image();image.Source = new BitmapImage(new Uri(@"daw\adw.jpg",UriKind.Relative));
  • 从MemoryStream生成ImageSource的最佳实践需求思路实现小结参考 好久没有写博客了,今天刚好清明节假期,闲来无事,把最近项目中优化的一个点总结一下。 需求 最近做的项目,需要增加表情功能,需要加载近4000张表情...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,537
精华内容 3,414
关键字:

imagesourcewpf