[转]使用Bitmap.FromStream(GetType().Assembly.GetManifestResourceStream())出现System.ArgumentException的解决办法
http://blog.csdn.net/blue_sky_blue_heart/archive/2005/12/17/555139.aspx
今天碰到了一个非常“妖”的问题,就是在自己的数据挖掘开发包中需要动态加载一张图片,以在数据挖掘结果图表Chart中显示,程序如下:
Image image = Bitmap.FromStream(
GetType().Assembly.GetManifestResourceStream( NameSpace+"." + mapname) );
但是调试时总会抛出异常“未处理的“System.ArgumentException”类型的异常出现在 system.drawing.dll 中。其他信息: “null”不是“stream”的有效值。”,显然GetTyp().Assembly.GetManifestResourceStream()方法并没有找到需要加载的图片。难道是命名空间的问题,我就采用
Assembly asm = Assembly.GetExecutingAssembly();
Image image = new Bitmap(asm.GetManifestResourceStream(asm.GetName().Name
+ "." +mapname));
和
string localNameSpace = this.GetType().Namespace;
Image image = Bitmap.FromStream(
GetType().Assembly.GetManifestResourceStream(localNameSpace + "." + mapname) );
这两种方式分别进行尝试,跟踪进去发现命名空间都是一样且正确的,结果仍返回同样的异常。
可是其他代码都没有问题啊,实在让人不得其解。
查了一下资料,发现有人提到Build Action" property should be set to " Embedded Resourse",我突然想到Assembly.GetManifestResourceStream 是从当前程序集加载指定的清单资源,呵呵,我要加载的图片仅仅
是放在项目文件夹中并包含在项目中,这个不能算是程序集中的资源阿。赶紧从项目文件列表中找到相应图片,果然发现图片的属性-〉生成操作类型是“编译”,将其改成“嵌入的资源”,重新编译,RUN。哈哈,一切都OK了。
------------------------
C#写WinForm的时候,常常用到里面的资料文件.就比如加入一个窗体的背景图片.如果不加入资源文件的时候,只能把图片放入Bin目录下,然用Application.StartupPath+文件名从而加入图片.这一种法有一个不好的地方就是如果图片被用户删了什么办呢?所以我个人认为,最好用的就是导入资料文件.
导入资料文件很简单,这里就不用说啦.下面谈一谈引用资源文件的几个方法.有谁需要用到这一点知识的可以参考一下:
一,用反射的方法.
Assembly assem = this.GetType().Assembly;
Stream stream = assem.GetManifestResourceStream("Draw.Resources.xunmeng.jpg");
this.BackgroundImage = new Bitmap(stream);
二,常用的方法.
//这里用的引用的是字符串
ResourceManager resource = new ResourceManager(typeof(About));
this.label1.Text = (string)resource.GetObject("MyName");
三,资源文件读取类.
using (ResXResourceReader reader = new ResXResourceReader(@"About.resx"))
{
foreach (DictionaryEntry entry in reader)
{
if (entry.Key.ToString() == "MyName")
{
this.label2.Text = (string)entry.Value;
}
}
}
我个人比较喜欢用第二种方法.第一种方法也是比较好的,但第三种的话可能要出问题.具体的自己试一试好啦.
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008822/137028.html
------------------------
分享到:
相关推荐
1. **添加资源**:在Visual Studio中,右键点击项目 -> “添加” -> “新项”,选择“资源文件”(Resources.resx)。这将创建一个资源文件,你可以在此处添加各种类型的内容,如图片、文本等。 2. **设置内嵌属性*...
在C# Winform环境下开发文件下载功能,主要是利用.NET Framework提供的System.Net命名空间中的WebClient类。这个类为开发者提供了一种简单的方式来处理HTTP、FTP等网络协议的交互,包括下载文件。本篇将深入探讨如何...
【C# WinForm仿Windows资源管理器DEMO详解】 C# WinForm仿Windows资源管理器DEMO是一个基于C#编程语言和Windows Forms框架构建的小型应用程序,旨在为开发者提供一个模仿真实Windows资源管理器功能的示例代码。这个...
在C#编程环境中,开发Windows桌面应用程序时,WinForm是一个常用的选择。...总的来说,这个过程涉及到客户端和服务器端的交互,需要对HTTP协议有深入的理解,同时也需要掌握WinForm控件的使用以及文件操作的相关知识。
总之,通过学习和实践C# Winform资源管理器项目,开发者可以深入理解.NET Framework中的文件系统操作,同时掌握如何构建高效、用户友好的桌面应用程序。这个项目不仅是一个实用的工具,也是一个极好的学习案例,有助...
`frmThumb.resx`和`frmView.resx`是窗体资源文件,包含了窗体上的控件布局、文本、图标等资源,这些资源会被编译进最终的可执行文件。 `ImageArray.sln`是解决方案文件,包含了整个项目的组织和依赖关系,用于...
使用"C#Winform图标素材"这个压缩包,你可以找到各种风格和主题的图标,如通用的文件操作图标(例如新建、打开、保存、复制、粘贴等)、导航图标(前进、后退、主页等)、状态图标(成功、警告、错误等)以及自定义...
总的来说,创建一个C# WinForm资源管理器需要对.NET Framework的类库有深入理解,尤其是文件系统相关的类。通过这个项目,你可以掌握控件的使用、事件处理、数据绑定、文件操作等多个方面的技能,同时也能提高你对...
除了基础功能外,C# WinForm还支持如多线程、图像处理、文件操作、网络通信等高级特性。实例中包含了对这些技术的应用,如利用BackgroundWorker异步处理耗时任务,使用PictureBox显示和处理图片,File类进行文件读写...
6. **.resx文件**:`Form1.resx`是资源文件,存储了窗体控件的属性和数据,如控件的位置、大小、文本等。在设计时,这些信息会自动保存在.resx文件中,运行时由.NET框架解析并应用到窗体上。 通过学习和实践这些...
本文将详细介绍如何在C# WinForm窗体中加载和操作这些文件,以及利用“DsoFramer”这个库进行实现。步步亿佰公司的这个示例提供了源代码,帮助开发者更好地理解这一过程。 首先,`C#加载Excel`是一个常见的需求,...
总之,《C# WinForm电子教程》是一本全面介绍C#编程和WinForm应用开发的资源,无论是对编程感兴趣的新手,还是希望扩展技能的开发者,都能从中受益匪浅。通过阅读这本书,你将不仅能够理解C#语言的基本原理,还能...
在C#编程环境中,处理Excel文件是常见的任务,特别是在Windows Forms (WinForm) 应用程序中。本篇文章将深入探讨如何使用C#来读取Excel文件内容,以实现数据的导入、分析或展示。 首先,我们需要理解的是,C#本身并...
最后,记得在项目中妥善管理资源文件,例如`.sln`文件用于管理整个解决方案,`.db`文件是Visual Studio的数据库文件,`.txt`文件可能是说明文档,`.vs`目录存储Visual Studio工作区信息,`Release`目录存放编译后的...
总的来说,C# WinForm应用的国际化涉及资源文件的创建、编辑以及在代码中正确引用。通过分离界面文本和逻辑,我们可以轻松地为不同地区提供本地化的用户体验。在实际项目中,还应考虑更复杂的情况,如日期格式、货币...
《C# WinForm实例大全》是一份集合了198个Csharp WinForm应用程序实例的资源库,旨在帮助开发者深入理解和掌握C#编程语言在Windows桌面应用开发中的实践技巧。WinForm是.NET Framework中用于创建图形用户界面(GUI)...
1. 保持资源文件的一致性,确保每个语言版本的资源文件都有相应的条目。 2. 考虑到日期、时间、数字和货币格式的本地化,这些通常由系统自动处理,但可能需要在某些情况下手动调整。 3. 在设计界面时,考虑到不同...
本文将详细探讨如何利用提供的“C# WinForm开发经典图标素材总共有3800”这一资源来提升你的WinForm应用程序的视觉效果。 首先,WinForm是一种.NET Framework下的图形用户界面(GUI)开发工具,它提供了丰富的控件...
在本文中,我们将深入探讨如何使用C#编程语言和Windows Forms(WinForm)来创建一个简易的文件浏览器程序。这个程序具有用户友好的界面,包括菜单、工具栏、树形视图以及文件列表,能够方便地浏览和操作本地文件系统...
`obj`目录下通常是编译过程中产生的临时文件,包括编译后的类文件、资源文件等。 综上所述,这个压缩包提供的资源可以帮助开发者深入理解如何在C# WinForm应用中集成打印功能,包括从UI设计到后端打印逻辑的实现,...