2012-02-16 76 views
0

我需要从代码后面添加控件的背景图像。也就是说,我写了下面:BitmapImage.UriSource howto

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

的问题是,我不能够得到开放的源权。该项目的结构如下所示:images文件夹位于根目录级别(比如与资源一级相同),并且card.png将其构建操作设置为“资源”,并始终复制到输出文件夹。我的课程在另一个文件夹中,与“图片”相同。我错过了什么?谢谢。

回答

2

我认为问题是你们班的位置....如果你的类是不是有根的位置,那么你必须使用下面的代码...

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

注:“../”可能这取决于你的类地而异....

+0

你是对的;我会编辑我的问题。但是,它也没有工作。 – Tilvia 2012-02-16 17:23:18

+0

确保按照确切的案例....对于文件夹和图像名称 – Bathineni 2012-02-16 17:29:03

1

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

对于嵌入DED资源(在当前组件):

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

对于安装文件夹资源:

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

获得更多选项参见MSDN link

+0

对不起,没有成功。无论如何,我正在检查链接。 – Tilvia 2012-02-16 17:34:34

+0

@Tilvia a。当您在解决方案资源管理器中选择png文件并检查其属性时,“生成操作”和“复制到输出目录”的值是什么?湾什么是包含该控件的程序集的程序集名称以及包含资源的程序集(png)是什么? C。从解决方案文件夹到每个项目的路径是什么? d。其项目文件夹中的png路径是什么? – 2012-02-16 18:46:56

2

我找过很多次,一个完整的包URI是有点多,并且简化乌里作品一样好,如果不是更好

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