WPF - 无法获取资源文件

时间:2012-08-27 13:38:17

标签: c# wpf bitmap embedded-resource

我在/ Images文件夹中存档animaha135.gif,将“Build Action”设置为“Embedded Resource”或“Resources”,我想将此图像转换为位图:

            var image = new BitmapImage();
            image.BeginInit();
            image.UriSource = new Uri("pack://application:,,,/Images/animaha135.gif");
            image.EndInit();

但它不起作用:

  

找不到资源'images / animaha135.gif'。

我做错了什么?


解决了这个问题。程序集的名称不是项目名称。我设置相同,我的第一个代码工作

2 个答案:

答案 0 :(得分:2)

不要构建为“嵌入式资源”。构建为“资源”。 - >为我工作

编辑:

用它来创建你的uri:

protected static Uri GetUri(string filename, Type type)
{
    Assembly assembly = type.Assembly;
    string assemblyName = assembly.ToString().Split(',')[0];
    string uriString = String.Format("pack://application:,,,/{0};component/{1}",
        assemblyName, filename);
    return new Uri(uriString);
}

我用它来定制阴影效果

答案 1 :(得分:0)

如果您使用嵌入资源,则需要阅读程序集清单

      private void LoadImg()
    {

       //x is name of <Image name="x"/>
       x.Source = GetResourceTextFile(GetResourcePath("Images/animaha135.gif"));


    }


    private string GetResourcePath(string path)
    {
        return path.Replace("/", ".");
    }


    public BitmapFrame GetResourceTextFile(string filename)
    {

        string result = string.Empty;

        using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(String.Format("{0}.{1}",this.GetType().Assembly.GetName().Name,filename)))
        {
            BitmapFrame bmp = BitmapFrame.Create(stream);
            return bmp;
        }

    }

其他解决方案(返回Bitmap):

 //Use   BitmapImage bitmap = GetResourceTextFile(GetResourcePath("Images/animaha135.gif"));


    public BitmapImage GetResourceTextFile(string filename)
    {

        string result = string.Empty;

        using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(String.Format("{0}.{1}",this.GetType().Assembly.GetName().Name,filename)))
        {

            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = stream;
            bi.EndInit();

            return bi;
        }

    }

注意:嵌入资源替换路径=&gt; /。