在不可见区域上绘制VSIS图像位图

时间:2013-06-04 21:28:33

标签: image windows-runtime directx winrt-xaml

我正在尝试创建一个基于flipview的windowsRT应用程序,其中flipview的每个项目(我的应用程序术语中的页面)都是VSIS支持的图像。根据VSIS的设计,每当任何图像进入可见区域时,VSIS的更新所需功能都会被调用并为我绘制位图。

作为一项增强功能,我希望缓存下一页的图像/位图,如果用户点击下一个按钮,将会显示该图像/位图。为了实现这一点,我在不同的线程中调用相应VSIS的invalidate函数,希望这会在后台呈现位图(通过调用UpdatesNeeded),并且当用户单击下一个按钮时,图像已经准备好了显示。

但是当VSIS不在可见区域时,似乎invalidate函数不会调用updatesneeded回调,因此我的缓存设计失败了。是否有相同的方法/解决方法?我事先知道页面/图像的尺寸,因此获取vsis的更新信息不是问题。此外,如果已经渲染了位图,我的updatesneeded函数将返回,当图像进入可见区域并且调用需要更新时,VSIS将不需要再次重绘整个图像。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。实际上我认为,即使我的图像不在可见区域,UpdatesNeeded函数也会被调用,这是错误的。相反,我实现了自己的函数PreCacheImage。调用时,此函数会创建ID2D1Bitmap图像并存储它。当调用UpdatesNeeded函数时(图像变得可见),我检查我的Bitmap是否有效,如果是,我只是将它blit到屏幕上。