从嵌入式资源WP8 / C加载映像#

时间:2014-01-09 16:49:30

标签: c# windows-phone-7 windows-phone-8

我正在尝试从Windows手机应用程序中的嵌入式资源加载图像

这是我的项目设置:

Module1 =电话申请

Module2 = ClassLibrary.dll

Module1调用Module2为手机应用程序创建所有数据对象。

当Module2创建对象时,我想从资源加载图像。

资源为“Default.png”并保存在“Images”目录中(Build Action = Embedded Resource,Copy to Output Directory = Always Copy)

我正在使用的代码产生异常

ex = {"The request is not supported. "}

以下是代码:

private void LoadImage()
{
  Assembly curAssembly = null; 

  curAssembly = Assembly.GetExecutingAssembly();

  string [] names = curAssembly.GetManifestResourceNames();

  // names[0] = "Storage.Images.Default.png"
  // so I know I am using the correct name 

  Stream resStream = curAssembly.GetManifestResourceStream("Storage.Images.Default.png");

  BitmapImage bitMapImage = new BitmapImage();

  try
  {
    bitMapImage.SetSource(resStream);
  }
  catch (Exception ex)
  {
    Debug.WriteLine(ex.ToString());
  }
}

你可以帮助新手吗? 感谢

2 个答案:

答案 0 :(得分:0)

实现这一目标的步骤:

First Appraoch

  1. 在VS中右键单击您的项目,然后选择“添加新项
  2. 从“常规”标签中选择“资源文件
  3. 打开刚刚添加到项目中的 resource_file.resx ,然后选择“添加现有项目”,然后选择您的图片。
  4. 然后在你的LoadImage方法中,执行以下操作:

    private void LoadImage()
    {
    Drawing.Bitmap bitMapImage = resource_file.name_of_your_image;
    }

  5. 注意:在此代码中,我假设您为资源文件选择的名称是“resource_file”

    第二种方法

    System.Resources.ResourceManager rm = new System.Resources.ResourceManager(this.GetType().Assembly.GetName().Name + ".resource_file", this.GetType().Assembly);
    System.Drawing.Bitmap bmp= (System.Drawing.Bitmap)rm.GetObject("Baba");
    

    或者使用可以使用System.Resources.ResourceReader和其他方法

答案 1 :(得分:0)

想出来......

我用来加载资源的名称是错误的......

使用此调用中返回的数组中的名称

string [] names = curAssembly.GetManifestResourceNames();

它完美无瑕地运作