我正在考虑在我的应用程序中使用VirtualSurfaceImageSource,并且我已经实现了类似于Direct2D 杂志应用示例的东西,但是当虚拟表面比显示区域大几倍时,我遇到了一个问题。
基本上,我有一个水平滚动ScrollViewer
,其中包含一个Image
. 图像的来源是宽的VirtualSurfaceImageSource
(至少 ~10000 x 500 像素)。的宽度ScrollViewer
为 1280 像素。
当我通过触摸平移滚动滚动查看器时,图像有时会闪烁 - 图像的一部分消失,然后重新绘制。这通常发生在惯性滚动停止时。图像在滚动到视图时已经完全绘制,但由于某种原因它被清除并被IVirtualSurfaceUpdatesCallbackNative::UpdatesNeeded()
调用。
我上传了一个说明问题的视频。观察滚动停止时会发生什么(在 0:02、0:17 等...)
任何想法为什么会发生这种情况?
我还注意到,如果图像宽度约为 5000 像素或更小,则不会发生闪烁。
如果您想重现此内容,请从Direct2D 杂志应用示例开始,并在 Sample.story 中的<text name="butterfly-body">
标签下添加更多文本 - 只需将现有文本复制 10 次左右。尝试以不同的速度双向滚动蝴蝶页面,您应该会看到似乎是相同的问题。
我在MSDN 论坛上问过这个问题,但到目前为止我还没有得到答案。