2

BitmapImage 的源在 UI 中显示后会自动释放吗?

我看到在 Image 控件中显示一次 BitmapImage 后,再次显示它需要大约 300 毫秒。在此延迟期间,屏幕上没有绘制任何内容。使用 XPerf 进行分析显示了解码操作。解码应该不是必需的,因为图像已经显示。

(顺便说一句 - 我发誓这在 Windows 8 中没有发生,但无法证明)

编辑 - 更多分析...

在一次运行中,250 毫秒的延迟分为 120 毫秒用于解码、100 毫秒用于填充渲染目标和 30 毫秒用于 dwm 将其放在屏幕上。也许是图像控件正在释放渲染目标的内存?

编辑 -

当一个 Image 控件的 Source 被赋予一个新创建的 BitmapImage 时,图像会立即显示在 UI 中。当给定一个之前显示的 BitmapImage 时,大约 300 毫秒没有显示任何内容。使用 XPerf 进行分析表明,这些情况之间的主要区别在于后者需要解码步骤。

我为 BitmapSource 创建了一个代理,希望我可以窃听 Image 控件对位图所做的事情。这没有用。看起来 Image 控件通过一个接口访问图像数据,而不是它要求您提供的接口 (ImageSource)。

4

0 回答 0