WPF 引用DLL纯图像资源包类库中的图片

原文:WPF 引用DLL纯图像资源包类库中的图片

1、建立WPF应用程序

             过程略。

 

2、创建类库项目(图片资源包)

      创建图片资源类库项目MyImages,删除class1.cs,在项目属性的资源选项中选择“图像”类型,并在“添加资源”中点击“添加现有的文件”,把图像加入到资源。并把访问修饰符改为Public。

 

3、在WPF应用程序中引用类库项目

       在WPF中通过 MyImages.Properties.Resources.XXX即可访问图像。XXX为图像文件名(资源名称)。但在WPF中的到图像还需一下工作。

 

4、WPF中创建Rectangle或其它采用ImageBrush对象为填充或背景的控件,将ImageBrush的ImageSource属性设置为资源包中图像的方法如下:

 /// <summary>
        /// 读取符号(图片资源库中的文件)
        /// </summary>
        /// <param name="symbolName"></param>
        /// <returns></returns>
        public static ImageBrush GetImagebrush(string ImageName)
        {
            ImageBrush imageBrush = new ImageBrush();
            System.Resources.ResourceManager rm = ImageLibrary.Properties.Resources.ResourceManager;
            System.Drawing.Bitmap b = (System.Drawing.Bitmap)rm.GetObject(ImageName);
            imageBrush.ImageSource = ToWpfBitmap(b);
            return imageBrush;
        }

      

 public static BitmapSource ToWpfBitmap(Bitmap bitmap)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                //注意:转换的图片的原始格式ImageFormat设为BMP、JPG、PNG等
                bitmap.Save(stream, ImageFormat.Png);

                stream.Position = 0;
                BitmapImage result = new BitmapImage();
                result.BeginInit();
                // According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed."
                // Force the bitmap to load right now so we can dispose the stream.
                result.CacheOption = BitmapCacheOption.OnLoad;
                result.StreamSource = stream;
                result.EndInit();
                result.Freeze();
                return result;
            }
        }

            

调用方法:           Rectangle1.Fill=GetImagebrush(ImageName);

     注意转换的图片的原始格式ImageFormat必须设置正确。如原图片为PNG格式,调用时设为BMP格式时会失真。

时间: 2024-10-31 14:36:42

WPF 引用DLL纯图像资源包类库中的图片的相关文章

在SQL Server引用dll的流程

原文:在SQL Server引用dll的流程 在SQL Server中引用dll分为两个步骤 1.创建一个dll文件 2.把dll文件放进SQL Server的程序集中.然后定义一个Function,就可以通过该Function来引用dll中的函数.   创建一个dll文件 1.点击"文件"->"新建"->"项目"->类库,把命名空间改成StringHelp,添加如下代码 namespace StringHelp //命名空间

详解PHP的Yii框架中自带的前端资源包的使用_php技巧

Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文件,图片或视频等, 资源放在Web可访问的目录下,直接被Web服务器调用. 通过程序自动管理资源更好一点,例如,当你在页面中使用 yii\jui\DatePicker 小部件时, 它会自动包含需要的CSS和JavaScript文件,而不是要求你手工去找到这些文件并包含, 当你升级小部件时,它会自动使用新版本的资源文件,在本教程中,我们会详述Yii提供的强大的资源管理功能. 资源包 Yii在资源包中管理资源,资源包简单的

控件-WPF 输出dll文件没有嵌入主题资源

问题描述 WPF 输出dll文件没有嵌入主题资源 在使用WPF类库输出自定义控件, 建立一个新项目引入输出的dll文件时, 发现自定义控件中的主题资源(.xaml文件)并没有执行(应该是没有打包到dll文件中). 求大大解答 解决方案 问题已经解决了. 把主题资源全部定义在ThemesGeneric.xaml下, 并且在自定义控件中加入代码: DefaultStyleKeyProperty.OverrideMetadata(typeof(类名), new FrameworkPropertyMet

如何在C#的类库中添加web service引用

本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008,之所以没有选择现在热门的WCF,本人有如下原因: 1:负责开发Web Service的小组对于vs2008应用不多,更不能奢望令人垂涎的WCF. 2:项目开发时间有限,根本不许你去拿项目做实验. 3:项目改动不大,web service足够对付需求. 由于我们的项目是从1.1直接升级到3.5,升级

在C#中引用DLL文件后,程序运行一段时间,内存就会不断增加?

问题描述 在C#中引用DLL文件mydll.dll程序中,建立一个对象mydll.class1ob=newmydll.class1();在程序的最后需要deleteob吗?如何去delete这个对象?是不是要在dll文件中,写一个函数delete(),然后在C#中调用这个函数?不知道我说清楚了没有,主要是我现在的程序连续运行时间一天左右,内存就会缓慢的不停的增加我怕是内存泄露,但是刚接触这方面知识,不是很明白.看了一些资料,说new一个对象后就要delete但是又看到资料说,C#本身就带有自动回

remoting引用dll的问题

问题描述 以下是一个远程对象类的定义:publicclassServerObject:MarshalByRefObject{ publicPersonGetPersonInfo(stringname,stringsex,intage) { Personperson=newPerson(); person.Name=name; person.Sex=sex; person.Age=age; returnperson; }} 这个类只实现了最简单的方法,就是设置一个人的基本信息,并返回一个Perso

2010-Framework and References引用Dll库

问题描述 Framework and References引用Dll库 使用VisualStudio2010开发平台,关于MFC Dll的引用问题,工程属性中有两种方法都可以把 Dll库引用进来,分别是Framework and References 和 Additional Dependencies,但不是特别清楚这两种方法具体的使用场合. 以下是个人对这两种方法的理解: Framework and References,只能引用本地Solution下自己编译生成的Dll库 Additiona

编译器-关于.net版本问题,引用dll的相关问题

问题描述 关于.net版本问题,引用dll的相关问题 我要在已发布的网站上面添加新的页面(网站没有源码, .net 2.0),加了一个a.html和a.ashx(这个文件只有ashx,没有ashx.cs,代码直接写在ashx里面),我在一般处理程序中,加了这样的引用using System.Data.OracleClient; 现在这几个新加页面本地项目已经发布,当我在a.html , a.ashx , 和一个访问数据库的dll文件,直接拖到页面下,页面报错: 编译器错误消息: CS0234:

C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现

问题描述 C#如何将一个方法公开出去,先在一个类库中声明生成dll后,在主程序中实现,求如何实现 就是主程序的一个方法 继承类库声明的方法后 通过类库生成的dll公开出去,主程序要如何让实现类库中声明的方法 解决方案 插件引用主程序可以了,也可以做一个公共的dll,插件和主程序都引用它. 在这个dll或者主程序中定义接口或者抽象类,在插件中实现或者继承