BitmapImage.UriSource howto

时间:2012-02-16 17:08:41

标签: c# wpf

我需要从代码后面添加控件的背景图像。也就是说,我写了以下内容:

    BitmapImage tmp = new BitmapImage();
    tmp.BeginInit();
    tmp.UriSource = new Uri(@"../images/card.png", UriKind.Relative);
    tmp.DecodePixelWidth = 240;
    tmp.EndInit();
    this.bg.Source = tmp;

问题在于我无法使Uri源正确。项目的结构如下:images文件夹位于根级别(例如,在资源级别的同一级别),card.png将其构建操作设置为Resource,并始终复制到输出文件夹。我的班级在另一个文件夹中,与“图像”相同。我错过了什么?感谢。

3 个答案:

答案 0 :(得分:2)

我认为问题在于您的班级位置....如果您的班级不在根位置,那么您必须使用以下代码......

 new Uri(@"../images/card.png", UriKind.Relative)

注意:“../”可能会因您的班级位置而异....

答案 1 :(得分:2)

我发现很多时候Uri的包装有点多,简化的Uri如果不是更好的话也会起作用

Uri imageUri = new Uri("/namespace;component/images/card.png", UriKind.RelativeOrAbsolute);

答案 2 :(得分:1)

您可以在MSDN中找到完整的选项列表, 我个人更喜欢使用这两种绝对路径格式:

对于嵌入式资源(在当前程序集中):

"pack://application:,,,/Subfolder/ResourceFile.xaml"

对于安装文件夹中的资源:

"pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

有关更多选项,请参阅MSDN link

相关问题