WPF图像资源
我主要来自网页和一些Windows窗体背景。 对于一个新项目,我们将使用WPF。 出于说明目的,WPF应用程序需要10-20个小图标和图像。 我正在考虑将这些作为嵌入式资源存储在程序集中。 这是正确的路吗?
如何在XAML中指定Image控件应该从嵌入资源加载图像?
如果您将在多个地方使用图像,那么将图像数据只加载到内存中并在所有Image
元素之间共享图像数据是值得的。
为此,请创建一个BitmapSource
作为某处的资源:
<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />
然后,在您的代码中,使用如下所示的内容:
<Image Source="{StaticResource MyImageSource}" />
就我而言,我发现我必须将Image.png
文件设置为具有Resource
的构建操作,而不仅仅是Content
。 这会导致图像被载入您的编译程序集。
我发现使用图像,视频等最佳做法是:
例
<Image Source="/WPFApplication;component/Images/Start.png" />
优点:
有些人正在询问如何在代码中做这件事,但没有得到答案。
花了很多时间搜索后,我发现了一个非常简单的方法,我没有找到任何例子,所以我在这里分享我的图片。 (我的是.gif)
概要:
它返回一个ImageSource“目标”似乎喜欢的BitmapFrame。
使用:
doGetImageSourceFromResource ("[YourAssemblyNameHere]", "[YourResourceNameHere]");
方法:
static internal ImageSource doGetImageSourceFromResource(string psAssemblyName, string psResourceName)
{
Uri oUri = new Uri("pack://application:,,,/" +psAssemblyName +";component/" +psResourceName, UriKind.RelativeOrAbsolute);
return BitmapFrame.Create(oUri);
}
学习:
根据我的经验,包字符串不是问题,请检查您的流,特别是如果第一次读取它时将指针设置为文件结尾,并且在再次读取之前需要将其重新设置为零。
我希望这可以为你节省很多小时,我希望这篇文章对我有用!
链接地址: http://www.djcxy.com/p/8903.html上一篇: WPF image resources
下一篇: What's the difference between StaticResource and DynamicResource in WPF?