使用WPF的DrawingContext类每秒帧数

时间:2010-07-19 09:06:55

标签: c# wpf

我有一个示例应用程序,它使用OnRender覆盖Control类的DrawContext实例绘制矩形,线等。通过调用InvalidateVisual(我可以将源发布给任何感兴趣的人),每10毫秒重新绘制一次该控件。我通过测量每次OnRender调用之间的时间来计算每秒帧数(FPS)。

但是,这个FPS的数字不正确。通过查看应用程序,我可以看到为FPS提供的数字高于应用程序重新绘制自身的每秒的次数。这是因为“当您使用DrawingContext对象的绘图命令时,实际上存储了一组渲染指令(尽管确切的存储机制取决于提供DrawingContext的对象的类型),稍后将由图形系统;你没有实时绘制到屏幕上。“

所以我想知道的是,如果有任何我可以订阅的事件,或者任何其他方式,确定我的WPF应用程序/控件每秒生成一个新位图并将其绘制到屏幕上的次数是多少?我们可以访问的“图形系统”是否有任何位图缓冲区?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您需要使用的是每帧调用的CompositionTarget.Rendering事件。