我目前正在开发一种软件,它涉及以图形和图表形式实时呈现性能指标。我需要尽可能快地获取数据,处理数据和渲染图像。我的后端是用C ++编写的,而且我必须在前端做出选择。 鉴于我的后端是C ++,我倾向于使用MFC。另一种方法是使用WPF C#作为前端,并与我的C ++后端互操作。我最近读到WPF提供硬件加速,这应该有助于我实现高帧率。 MFC硬件也会加速其图形吗?硬件加速甚至重要吗? 鉴于WPF的硬件加速,在我的情况下,这是否使WPF成为最有效的图形替代方案?
答案 0 :(得分:1)
我相信WPF使用DirectX 9提供硬件加速。但是对于折线图,限制因素是界面元素的数量。我们正在WPF中创建一个程序,使用Telerik图表实时显示sEMG数据。这些可以配置为在引擎盖下使用direct2d加速,如果你有很多数据点,可以稍微提高性能。它仍然是生涩的,因为你无法控制WPF的渲染线程。
这取决于图表中所需的功能数量。如果优先考虑的是丝毫顺畅的实时显示,请不要使用WPF。
答案 1 :(得分:0)
Visual Studio 2010向MFC添加了类,以支持使用MFC程序中的Direct2D渲染。
要使用Direct2D,请先在View的EnableD2DSupport()
中调用OnCreate
(从技术上讲,我认为它不一定位于OnCreate
中,但这是通常的位置)。然后,当D2D显示上下文需要更新时,您会收到AFX_WM_DRAW2D
条消息,因此通常需要为此添加一个处理程序,并通过根据需要呈现您的内容来对其进行响应。
要考虑的另一种可能性是使用现有控件来绘制图形。周围有很多地方,包括一些具有相当宽松许可证的免费网站。仅举例来说,CodeProject有许多Charting controls,其中一些使用D2D进行绘图,还有很多没有使用。{p>
老实说,我对图表具有足够快的信息更新速度以使绘制速度通常产生巨大变化的图表感到有些惊讶。在大多数典型情况下,真正的限制将是用户理解您所绘制内容的能力。用户根本无法观看100个不同的图形,每个图形都以60 Hz的频率更新(例如),并希望从其中的大多数图形中获得很多真实的含义。在大多数情况下,真正的挑战不是更快地绘制更多数据,而是为用户提供更好的方式来专注于他们一次可以关注的一些事情,并(例如)在需要时吸引他们注意重要的变化