2

我有一个 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' 类型的异常。”

如何动态创建兼容的位图以允许窗口显示图标?

4

2 回答 2

0

事实证明 BitmapFrame.Create 是正确的。只需要传递一个 Uri 而不是现有的 BitmapSource。

于 2010-04-05T06:57:55.020 回答
0

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

如果图像不是在运行时确定的,那么您总是可以手动转换图像以使用Microangelo或类似的东西生成一个 .ico 文件。显然,如果您确实需要动态创建图标,这无济于事。

于 2010-03-22T15:06:00.643 回答