我Image
在窗口上放置了一个控件,我想显示存储在名为“ Resources.resx”的项目资源文件中的图像。资源文件中图像的名称为“搜索”。
有人可以告诉我如何去做吗?
Answers:
如果映像位于资源文件夹中,并且其生成操作设置为“资源”。您可以按以下方式在XAML中引用该图像:
"pack://application:,,,/Resources/Search.png"
假设您在“资源”文件夹下没有任何文件夹结构,并且它是一个应用程序。例如,我使用:
ImageSource="pack://application:,,,/Resources/RibbonImages/CloseButton.png"
当我在Resources文件夹下有一个名为RibbonImages的文件夹时。
如果您的项目的Icons文件夹中有一个图像,并且其构建动作是“ Resource”,则可以这样引用它:
<Image Source="/Icons/play_small.png" />
这是最简单的方法。这是我完全可以从资源的角度来看并且没有项目文件的唯一方法:
var resourceManager = new ResourceManager(typeof (Resources));
var bitmap = resourceManager.GetObject("Search") as System.Drawing.Bitmap;
var memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
memoryStream.Position = 0;
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.EndInit();
this.image1.Source = bitmapImage;
<Image Source="/Icons/play_small.png" />
请注意开头的正斜杠表示在根文件夹中查找。如果xaml文件不在根目录下,这是必需的,因为没有正斜杠,它将在与xaml文件相同的目录中开始搜索。
使用资源文件的好处之一是按名称访问资源,因此只要资源保持最新,就可以显示图像,更改图像名称,只要显示正确的图像即可。
这是一种更干净的方法来实现此目的:假设Resources.resx位于“ UI.Images”命名空间中,请像这样在xaml中添加命名空间引用:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:UI="clr-namespace:UI.Images"
像这样设置您的图片来源:
<Image Source={Binding {x:Static UI:Resources.Search}} />
其中“搜索”是资源的名称。
<Image Source="MyRessourceDir\images\addButton.png"/>