Problema de oscilação com VirtualSurfaceImageSource
-
13-12-2019 - |
Pergunta
Estou pensando em usar VirtualSurfaceImageSource em meu aplicativo e implementei algo semelhante ao Exemplo de aplicativo de revista Direct2D, mas encontrei um problema que ocorre quando a superfície virtual é várias vezes maior que a área de exibição.
Basicamente, eu tenho uma rolagem horizontal ScrollViewer
que contém um Image
.A fonte da imagem é uma ampla VirtualSurfaceImageSource
(pelo menos ~10.000 x 500 px).A largura do ScrollViewer
é 1280 pixels.
Quando rolo o visualizador de rolagem com movimento panorâmico por toque, a imagem às vezes treme - uma parte da imagem desaparece e depois é redesenhada.Isso geralmente acontece quando a rolagem inercial para.A imagem já está totalmente desenhada quando rola para a visualização, mas por algum motivo ela está limpa e IVirtualSurfaceUpdatesCallbackNative::UpdatesNeeded()
é chamado.
eu carreguei um vídeo que ilustra o problema.Veja o que acontece quando a rolagem para (0:02, 0:17, etc...)
Alguma idéia de por que isso está acontecendo?
Também notei que a oscilação não ocorre se a largura da imagem for de aproximadamente 5.000 px ou menos.
Se você quiser reproduzir isso, comece pelo Exemplo de aplicativo de revista Direct2D e adicione mais texto em Sample.story, sob o <text name="butterfly-body">
tag - basta copiar o texto existente cerca de 10 vezes.Tente rolar a página da borboleta em ambas as direções e com velocidades variadas e você verá o que parece ser o mesmo problema.
Eu fiz essa pergunta em um Fórum MSDN, mas até agora não obtive resposta.
Solução
Isso não é mais um problema no Windows 8 Release Preview, então provavelmente foi apenas um bug no Consumer Preview.