zoukankan      html  css  js  c++  java
  • 【转载】使用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了。

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/sea_peak/p/1986106.html
Copyright © 2011-2022 走看看