在后面的代码中使用资源图像

时间:2009-04-21 20:11:13

标签: c# wpf visual-studio resources

我需要动态更改应用于我的某个按钮的背景图像,但无法弄清楚如何。图像将添加到项目中,并将其“构建操作”设置为“资源”。我试过了以下内容:

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative)));

这成功编译,但会因DirectoryNotFoundException崩溃而导致“无法找到路径的一部分'C:\ Images \ InchDOWN.png'。”

我不希望应用在磁盘上查找图像。如何将图像用作嵌入式资源?我认为它涉及将构建操作更改为嵌入式资源,但如何在后面的代码中使用此资源?

1 个答案:

答案 0 :(得分:8)

您必须将图像构建为资源 NOT 嵌入式资源。资源专门用于WPF项目。

在程序代码中使用它:

 buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/InchDOWN.png")));

我建议在XAML中更容易做到这一点。

修改

我在图像之前忘记了正斜杠,这可能是问题所在。如果您需要更多信息,请参阅MSDN article about pack Uris

也许你应该发一个问题,说明你究竟想要完成什么,并希望找到解决你的多状态按钮问题的不同方法。