gpt4 book ai didi

c# - Winforms 双缓冲

转载 作者:IT王子 更新时间:2023-10-29 04:14:04 25 4
gpt4 key购买 nike

我将此添加到表单的构造函数代码中:

this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);

但是当它加载控件时,只要它们发生变化(表单及其组件经常变化(需要更新)),它仍然会显示丑陋的工件。

我需要做哪些不同的事情?

最佳答案

这只会影响表单本身,不会影响子控件。如果它们很多,那么它们轮流绘制自己的时间就会变得很明显,它会在控件所在的位置留下一个矩形孔,该孔在子控件轮到它之前不会被填满。

解决这个问题的方法是对整个表单控件进行双缓冲。这是自 Windows XP 以来可用的选项,它使 WS_EX_COMPOSITED 样式标志可用。将其粘贴到您的表单中以将其打开:

protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}

它根本不会加快绘画速度,但表格会在延迟后捕捉到屏幕上。消除可见的油漆伪影。真正修复延迟不需要使用控件。您可以通过使用 OnPaint 方法绘制“控件”并使 OnMouseClick 事件智能地了解用户点击了什么“控件”。

关于c# - Winforms 双缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com