2011-09-08 33 views
3

过去两天里,这让我疯狂,而且发现任何东西似乎都不适用于我的情况,也许有人可以指出我做错了什么。从嵌入式资源中创建图像

我有一个WPF项目,我已经包含相当多的图像(80ish)。我已将它们添加到项目中,名为“Images”。他们目前被设置为嵌入式资源(虽然我也尝试了常规资源),但似乎没有任何工作。

我试图创建和加载类型图像的ArrayList使用这些文件作为源,但我失败相当糟糕。

private void addPicture(string name) 
{    
    string filePath = "pack://MyApp_WPF:,,,/Images/" + name + ".png"; 
    Stream imageStream = assembly.GetManifestResourceStream(filePath); 

    Image curImage = new Image(); 
    BitmapImage bmpImage = new BitmapImage(); 
    bmpImage.BeginInit(); 
    bmpImage.UriSource = new Uri(filePath, UriKind.Relative); 
    bmpImage.EndInit(); 
    curImage.Height = 60; 
    curImage.Stretch = Stretch.Uniform; 
    curImage.Source = bmpImage; 
    curImage.Margin = new Thickness(5); 

    imageList.Add(curImage); 
} 

这是很容易在我的Windows窗体应用程序做的,但我只是不能想出办法来使用WPF ...除了资源链接任何帮助将是很好的,因为机会是在这一点上我已经阅读过它们。

回答

4

首先要注意的是你应该订阅一个DownloadError事件,这可能解释发生了什么以及为什么(尽管有时错误信息是相当通用的)。接下来的是,你可能不需要pack:// URI构建与图像打造的Resource行动:

var bmpImage = new BitmapImage(new Uri(
    string.Format("/Images/{0}.png", name", UriKind.Relative)); 
+0

我可以发誓我试过这个,再试一次,这次它工作了,谢谢! –

3

Pack URI是错误的,在这里你的名字你组装,你应该把权威,在这种情况下application,即

string filePath = "pack://application:,,,/Images/" + name + ".png"; 
+0

我继续前进,在重新阅读有关Pack URI方面的权限后对其进行了更改,但出于某种原因,我得到了一个没有具体的解析错误,所以我可能会出错。我确实最终得到它! –