已经提出了这个问题的不同版本,但这些问题的解决方案并不符合我的要求。
假设我们在名为MyResource.resx
的项目文件夹中有一个名为Accept.png
的资源文件和一个图像文件Icons
,并且对此图像的引用位于MyResource.resx
。
我正在寻找一种方法来设置具有以下要求的Image UIElement的来源:
这是我已经测试过的。
1:在代码背后:
myImage.Source = new BitmapImage(new Uri(@"\Icons\Accept.png", UriKind.Relative));
此代码的问题是:不可能进行重构,甚至最糟糕的是,与错误的uri相关的错误仅在运行时。
2:再次出现在代码背后:
myImage.Source = MyResource.Accept.ToBitmapImage()
其中.ToBitmapImage()
是我在互联网上找到的方法:
public static BitmapImage ToBitmapImage(this System.Drawing.Bitmap bitmap)
{
using (MemoryStream memory = new MemoryStream())
{
bitmap.Save(memory, ImageFormat.Bmp);
memory.Position = 0;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memory;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
return bitmapImage;
}
}
此代码的唯一问题是图像透明度已丢失。
在Xaml中:
<Image x:Name="myImage" Source="/Icons/Accept.png" />
此代码的问题是:不能进行重构,并且不会显示与错误的uri相关的错误。它们甚至在运行时都没有被注意到。
我尝试在this tutorial之后使用xaml中的资源文件,但我失败了。
那怎么做。