对于复杂的窗口形状,GDI SetWindowRgn非常慢

时间:2016-07-02 22:56:36

标签: windows user-interface mfc window gdi

我们的应用程序使用SetWindowRgn()函数中的OnPaint() API创建自定义形状的叠加窗口。该区域窗口仅具有客户区域。它还有一个所有者窗口,这是一个普通的矩形窗口。

我们观察到,如果区域的形状很复杂,有时SetWindowRgn()中的OnPaint()调用需要很长时间才能返回,例如,如果窗口区域是文本或复杂的设计。即使是此区域窗口下方的窗口也会缓慢呈现。这主要发生在调整视图大小时。我们发现从OnNcCalcSize()内部调用SetWindowRgn()并且OnNcCalcSize()的默认处理需要很长时间才能返回。此外,在某些机器上,区域窗口下方窗口的绘制速度非常慢。

为什么复杂形状的区域窗口渲染会变慢?我们可以通过自定义处理OnNcCalcSize()或其他事件等事件来加快速度吗?

注意:请不要建议使用分层窗口,因为技术限制迫使我们使用区域窗口。

0 个答案:

没有答案