我有一个16x16 .png文件,我已将其作为ImageSource(BitmapSource)加载,当我在tabcontrol标题中的Image上使用它时它工作正常。
当用户拖动文档选项卡时,我现在想在浮动窗口(从WPF Window类继承)中使用相同的图像。 (这是AvalonDock,我已经调整它以允许标签标题中的图像)
在网上进行了多次搜索后,我了解Window.Icon需要一个BitmapFrame,但所有示例代码似乎都假设.ico文件可用,而不是我的情况。
我尝试过以下代码(加上包括克隆,冻结等变体):
var image = (Image) content.Icon;
var bitmapSource = (BitmapSource) image.Source;
Icon = BitmapFrame.Create(bitmapSource);
但是当调用Show()方法时,会抛出异常:“抛出了类型'System.ExecutionEngineException'的异常。”
如何动态创建兼容的位图以允许窗口显示图标?
答案 0 :(得分:0)
您是否需要能够动态加载图像,或者您是否一直使用相同的图标?
如果图像未在运行时确定,那么您可以随时手动转换图像以使用Microangelo或类似内容生成.ico文件。显然,如果您确实需要动态创建图标,这无济于事。
答案 1 :(得分:0)
原来,BitmapFrame.Create是正确的。只需要传递一个Uri而不是现有的BitmapSource。