CompositionTarget.Rendering事件是构建游戏主循环的完美工具。它基本上以vsync (通常为60 Hz)的速度发射。
在之前发生,即呈现组合树中的对象。在将动画和布局应用到组合树后,呈现事件将路由到指定的事件处理程序。
每帧动画的文章对此做了进一步的解释。
注意,您的事件处理程序方法是在计算布局之后调用的。但是,您可以在事件处理程序方法中修改布局,这意味着在呈现之前将再次计算布局。
基于此,其处理程序中的代码规则如下:
还有什么其他问题吗?,哪些非明显的操作会导致另一个布局传递?我在处理程序里面到底有多少时间?
发布于 2013-08-21 10:33:56
我认为它的主要目的是使没有计时器的动画,如那些使用物理元素,如重力,其中需要精确的定时。但是不是是游戏图形的好地方.WPF是,而不是,是一种游戏语言,严肃的游戏将,不,使用它,因为有太多的开销。如果您想编写一个.NET游戏,那么使用XNA。
来自“释放的WPF控制开发:建立高级用户体验”一书:
一些读者可能会认识到这种方法与高端图形子系统(如DirectX )之间的相似之处。不要误以为CompositionTarget.Rendering是一个很好的注入点来创建一个基于WPF的游戏图形引擎.高端图形和超高帧速率并不是WPF动画这个特定方面的目标。 与DispatcherTimer方法类似,基于CompositionTarget.Rendering的动画也没有时间限制.但是,这些事件与呈现线程同步,导致比DispatcherTimer更流畅的动画。此外,也不需要启动和停止计时器,尽管您可能需要分离并附加事件处理程序以提高性能。
https://stackoverflow.com/questions/18353225
复制相似问题