在代码中设置WPF图像源

在代码中设置WPF图像源

我正在尝试在代码中设置WPF图像的源代码。图像作为资源嵌入到项目中。通过查看示例,我提出了以下代码。由于某种原因,它不起作用 - 图像不显示。


通过调试,我可以看到流包含图像数据。那有什么不对?


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;

图标的定义如下: <Image x:Name="_icon" Width="16" Height="16" />


慕码人2483693
浏览 509回答 2
2回答

肥皂起泡泡

在遇到与您相同的问题并进行一些阅读后,我发现了解决方案 -&nbsp;包URI。我在代码中做了以下事情:Image&nbsp;finalImage&nbsp;=&nbsp;new&nbsp;Image();finalImage.Width&nbsp;=&nbsp;80;...BitmapImage&nbsp;logo&nbsp;=&nbsp;new&nbsp;BitmapImage();logo.BeginInit();logo.UriSource&nbsp;=&nbsp;new&nbsp;Uri("pack: //application:,,,/AssemblyName;component/Resources/logo.png");logo.EndInit();...finalImage.Source&nbsp;=&nbsp;logo;或更短,使用另一个BitmapImage构造函数:finalImage.Source&nbsp;=&nbsp;new&nbsp;BitmapImage( &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png"));URI分为几部分:权威:&nbsp;application:///路径:编译为引用的程序集的资源文件的名称。路径必须符合以下格式:AssemblyShortName[;Version][;PublicKey];component/PathAssemblyShortName:引用的程序集的简称。; Version [可选]:包含资源文件的引用程序集的版本。当加载两个或多个具有相同短名称的引用程序集时,将使用此方法。; PublicKey [可选]:用于对引用的程序集进行签名的公钥。当加载两个或多个具有相同短名称的引用程序集时,将使用此方法。; component:指定从本地程序集引用所引用的程序集。/ Path:相对于引用程序集的项目文件夹的根目录的资源文件的名称,包括其路径。之后的三个斜线application:必须用逗号替换:注意:包URI的权限组件是指向包的嵌入式URI,必须符合RFC 2396.此外,“/”字符必须替换为“,”字符和保留字符,例如“%”和“?”&nbsp;必须逃脱。有关详细信息,请参阅OPC。当然,请确保将图像上的构建操作设置为Resource。

沧海一幻觉

很容易:要动态设置菜单项的图像,只需执行以下操作:MyMenuItem.ImageSource&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;BitmapImage(new&nbsp;Uri("Resource/icon.ico",UriKind.Relative));...而“icon.ico”可以位于任何地方(目前它位于“资源”目录中),并且必须作为资源链接...
打开App,查看更多内容
随时随地看视频慕课网APP