2010-03-22 99 views
2

我有一个16x16 .png文件,我已经作为ImageSource(BitmapSource)加载,并且在tabcontrol标题中的图像上使用它时工作正常。将WPF BitmapSource转换为窗口图标

我现在想在用户拖动文档选项卡时在浮动窗口(从WPF窗口类继承)中使用相同的图像。 (这是AvalonDock,我已经调整了允许在标题标题中的图像)

经过在网络上的许多搜索后,我明白Window.Icon需要一个BitmapFrame,但所有示例代码似乎都假设一个.ico文件是可用,这是不是在我的情况。

我曾尝试下面的代码(加变体,包括克隆,冷冻等):

var image = (Image) content.Icon; 
var bitmapSource = (BitmapSource) image.Source; 

Icon = BitmapFrame.Create(bitmapSource); 

但是当显示()方法被调用时,则抛出异常:“类型的异常“System.ExecutionEngineException '被投掷了。“

我怎样才能创建一个兼容的位图,以允许窗口显示图标?

回答

0

你需要能够动态加载图像,或者你会一直使用相同的图标吗?

如果图像未在运行时确定,那么您可以随时手动转换图像以使用Microangelo或类似的东西生成.ico文件。显然,如果您确实需要动态创建图标,这并不会起作用。

+0

我想我问如何在运行时在内存中创建一个图标资源。 – simmotech 2010-03-31 15:46:37

0

原来,BitmapFrame.Create是正确的。只需要传递Uri而不是现有的BitmapSource。