在 WPF 图像中显示图标
我有一个 WPF 应用程序需要从可执行文件中提取图标。
我发现这里我可以做到这一点
Icon ico = Icon.ExtractAssociatedIcon(theProcess.MainModule.FileName);
,但是当我尝试设置 WPF 图像的源时,我得到
“无法将类型“System.Drawing.Icon”隐式转换为“System.Windows.Media.ImageSource”
有什么建议吗?
I have a WPF application that needs to extract the icon off of an executable.
I found here that I can do this
Icon ico = Icon.ExtractAssociatedIcon(theProcess.MainModule.FileName);
but when I try to set the source of a WPF Image I get
"Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Windows.Media.ImageSource'
Any suggestions ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon
方法可用于将System.Drawing.Icon
转换为 wpfBitmapSource
。System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon
method can be use to convert aSystem.Drawing.Icon
to wpfBitmapSource
.我想提供我想出的解决方案:
然后我有一个 IconToImageSourceConverter,它只需调用上面的方法。
为了方便我将图标添加为图像,我还添加了以下内容:
这样,如果图标直接放置在 XAML 中,仍然会显示:
否则可以在位置使用转换器,如下所示:
I wanted to offer the solution I've come up with:
I then have a IconToImageSourceConverter that simply calls the method above.
To make it easy for me to add icons as images I also added this:
This way, if an icon is placed directly in XAML if will still be shown:
Otherwise the converter can be used on location, like so:
图标在 .NET 框架中不受青睐。您必须使用 Icon.Save() 将获得的图标保存到 MemoryStream 中。它允许您使用接受流的 IconBitmapDecoder 构造函数。
Icons get no love in the .NET framework. You'll have to use Icon.Save() to save the icon you got into a MemoryStream. Which allows you to use the IconBitmapDecoder constructor that takes a stream.
我遇到了类似的问题,只需几个步骤我们就可以获得图像源:
我们可以使用此图像源将属性源输入到 XAML 中:
I had a similar problem and in few steps we can get the image source:
We can use this image source to feed the property source in out XAML:
我使用这个扩展方法从 Icon 转换为 ImageSource:
...
I use this extension method to convert from Icon to ImageSource:
...