我有一个包含一些“自定义控件”的库。本质上,我们有自己的按钮、圆角面板和一些带有一些自定义油漆的组合框。尽管 OnPaint 方法中有“数学”,但控件是相当标准的。大多数时候,我们所做的只是绘制圆角并向背景添加渐变。我们使用 GDI+ 来完成这一切。
这些控件没问题(根据我们的客户看起来非常漂亮),但是尽管有 DoubleBuffer,您仍然可以看到一些重绘,尤其是当同一表单上有 20++ 个按钮(例如)时。在表单加载时,您会看到按钮绘制……这很烦人。
我很确定我们的按钮不是地球上最快的东西,但我的问题是:如果双缓冲区“打开”,所有重绘不应该在后台发生,Windows 子系统应该“立即”显示结果吗?
另一方面,如果存在将创建标签的“复杂”foreach 循环,则将它们添加到面板(双缓冲)并更改它们的属性,如果我们在循环之前暂停面板的布局并在循环时恢复面板的布局结束了,所有这些控件(标签和按钮)不应该“几乎立即”出现吗?这不会那样发生,您可以看到面板被填充。
知道为什么这没有发生吗?我知道没有示例代码很难评估,但这也很难复制。我可以用相机制作视频,但相信我,它并不快 :)