我在XAML文件中设置了背景图片。我添加了鼠标输入事件监听器。并添加了代码:
var image = new ImageBrush();
image.ImageSource = new BitmapImage(new Uri("Images/buttonHover.png", UriKind.Relative));
this.Background = image;
但它正在抛出DirectoryNotFound
例外。我不知道如何从文件夹中获取图像。我的项目包含一个名为Images
的文件夹。
如何从Images文件夹访问图像?
修改
private void button1_MouseEnter(object sender, MouseEventArgs e)
{
var image = new ImageBrush();
image.ImageSource = new BitmapImage(new Uri("/WordFill;component/Images/buttonHover.png", UriKind.Relative));
this.Background = image;
}
由于
答案 0 :(得分:2)
您可以将图像存储为项目中的资源,并以这种方式访问它:
var SourceUri = new Uri("pack://application:,,,/MyCompany.MyProduct.MyAssembly;component/MyIcon.ico", UriKind.Absolute);
thisIcon = new BitmapImage(SourceUri);
答案 1 :(得分:1)
/<application_name>;component/Images/<image_name.png>
基本上你应该用上面的路径替换你现有的路径,同时记得在<>
标签之间替换代码
修改强>
这是xaml版本
<Grid Name="mainGrid"> <Rectangle><Rectangle.Fill><ImageBrush ImageSource="myCodeSnippet"/></Recatngle.Fill></Rectangle></Grid>
答案 2 :(得分:1)
AppDomain.CurrentDomain.BaseDirectory
将为您提供程序运行位置的完整路径。
将您的代码更改为:
image.ImageSource = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory+"Images\buttonHover.png", UriKind.Relative));
答案 3 :(得分:0)
您是否检查过该文件夹是否也在编译文件所在的目录中?即“/ bin中/调试”?
在visual studio中,如果图像在项目中,您可以将图像的属性更改为“Always Copy Local”,这将确保在编译时将文件的副本添加到输出目录。
答案 4 :(得分:0)
您是否已将“构建操作”设置为图像的内容?您可以在文件属性下找到选项。
答案 5 :(得分:0)
我已经测试了你的代码,虽然我将图像设置为layoutroot而不是this.background,但这对我来说没有任何错误。
要验证问题是否与图像路径有关,并且没有其他代码导致问题,请尝试在xaml页面中插入图像对象,然后从属性到源选项中选择图像,并使用相同的路径如果没有图像列表,则自动创建。这意味着您已经在主项目下创建了错误位置的图像文件夹,并且您可能在Web项目下创建了该文件夹。