在 WPF 中将图像加载为资源
在 WPF 开发中,通常希望将图像作为项目中的资源嵌入,以便于访问和部署。但是,在代码中动态设置图像源有时可能具有挑战性。
假设您在使用以下代码从资源加载图像时遇到问题:
<code class="language-csharp">Assembly asm = Assembly.GetExecutingAssembly(); Stream iconStream = asm.GetManifestResourceStream("SomeImage.png"); PngBitmapDecoder iconDecoder = new PngBitmapDecoder(iconStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); ImageSource iconSource = iconDecoder.Frames[0]; _icon.Source = iconSource;</code>
尽管流包含图像数据,但图像仍然不可见。解决方案在于使用 Pack URI,这是一种专门用于从程序集中加载资源的 URI 方案。
以下是一种包含 Pack URI 的更新方法:
<code class="language-csharp">Image finalImage = new Image(); finalImage.Width = 80; ... BitmapImage logo = new BitmapImage(); logo.BeginInit(); logo.UriSource = new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png"); logo.EndInit(); ... finalImage.Source = logo;</code>
此 URI 将授权指定为“application:///”,后跟程序集短名称、资源文件的路径以及用逗号替换的斜杠。此外,请确保将图像资源设置为“资源”作为其生成操作。
使用 Pack URI 可确保可靠地加载 WPF 中的嵌入式资源,使您可以将图像无缝集成到用户界面中。
以上是如何在WPF中正确加载资源中的图片?的详细内容。更多信息请关注PHP中文网其他相关文章!