近期在一个项目里边,用到了背景图片,后来在最大化/最小化时会出现应用在屏幕内不断闪屏情况。
通过查找资料,在构造函数内,增加了如下设置
SetStyle(ControlStyles.UserPaint, false);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
SetStyle(ControlStyles.ResizeRedraw, true);

后来突然发现出现了一个很诡异的bug,只有部分控件的背景能正常显示,其他窗体的背景图片全部镂空了,效果如下。
半镂空bug
调试了很久,我甚至怀疑是不是自己写程序导致了,重新创建了新窗体,测试没问题,将旧窗体的代码逻辑拷贝过去,故障就复现。
再逐行走读代码,发现上述代码的第一句感觉有问题,修改称true,然后就ok了。

标签: none

评论已关闭