none
请问wpf Viewport3D画面刷新问题 RRS feed

  • 问题

  • wpf Viewport3D中的Children改变后可以自动刷新以显示新的改变后的内容。但是如果编程序循环刷新(我想通过界面切换达到动画制作的目的),由于更新速度太快界面图案就无法显示新内容。想通过异步操作完成内容更新后,再改变Viewport3D的Children,当显示内容被正确显示后(是否会触发一个事件?我不知道),通知程序继续下一步内容更新操作。可是我找不到这样的事件。(注:通过在异步操作线程上实施sleep可以显示所有改变内容画面,但是本来现实每一祯的时间就太大而出现动画不连续,这样的话更不连续了)

    如何解决,请高手请帮忙呀!谢谢

    2008年12月9日 9:03

答案

  • Viewport3D.Children是一个dependency property,因此你更新过Children以后,WPF会自动更新界面。另外,我建议你不要启动一个线程来异步更新Children的内容,你可以使用Dispatcher.Invoke函数更新Children,效果会更好,下面是一个伪代码:

     

    Window.Dispatcher.Invoke(delegate() { Viewport3D.Children.Add(...) });

     

    关于Dispatcher的知识请参考:

     

    WPF Threading Model:

    http://msdn.microsoft.com/en-us/library/ms741870.aspx

    2008年12月9日 10:27

全部回复