在CS文件C#WPF中访问图像

时间:2014-01-27 15:13:46

标签: c# wpf

我在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;
        }

由于

6 个答案:

答案 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项目下创建了该文件夹。