我正在使用“Windows 运行时”为 Window 8 创建一个应用程序。
我有一个自定义控件,它可以自己绘画。为此,我使用 Rectangle 控件并将其“Fill”属性设置为从 SurfaceImageSource 派生的 ImageBrush,然后使用 ID2D1RenderTarget 进行绘画。对于绘制位图,我使用 ID2D1RenderTarget::CreateBitmapFromWicBitmap 并保存返回的 ID2D1Bitmap。控件是动画的,我创建了我需要的所有位图,然后不断地绘制场景。
在大多数情况下,这一切都很好。然而,我发现在随机的基础上,突然间,我已经隐藏的所有 ID2D1Bitmaps 都停止了绘制任何东西。我可以追溯代码,似乎没有任何问题,但是当我调用 ID2D1RenderTarget::DrawBitmap 时,什么也没有发生。但是,我发现如果我强制从文件中重新创建 ID2D1Bitmap,它就会再次正常工作。就好像位图已经失效或什么的。
这种位图丢失的情况很少发生,而且似乎是随机的,但我几乎可以保证它会在播放后的一个小时左右内失败。我很确定这不是内存泄漏,因为我可以一次运行应用程序数小时而不会增加使用的内存。另外,如果我强制位图重新加载,我可以继续,就好像什么都没发生一样。
谁能给我一个关于这里可能发生的事情的线索?
谢谢。