为了账号安全,请及时绑定邮箱和手机立即绑定

如何在窗体上双缓冲.NET控件?

如何在窗体上双缓冲.NET控件?

C#
繁华开满天机 2019-10-21 16:12:11
如何在窗体上双缓冲.NET控件?如何设置受保护的DoubleBuffered窗体上受闪烁影响的控件的属性?
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

查帐这条线

重复这个答案的核心,您可以在窗口上打开WS_ex_Composed样式标志,以获得窗体及其所有控件的双缓冲。自XP以来,样式标志可用。这并不能使绘画更快,但整个窗口是绘制在一个屏幕外的缓冲区,并一刀切地闪现到屏幕上。使它在用户的眼睛看起来即时没有可见的绘画文物。它并不是完全没有麻烦,一些视觉样式渲染器可以在它上故障,特别是TabControl,当它有太多的标签。YMMV。

将此代码粘贴到窗体类中:

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

这种技术和Winform的双缓冲支持之间最大的区别是Winform的版本只在一个控件上工作。您仍然会看到每个单独的控件绘制本身。这看起来也像闪烁的效果,特别是如果未绘制的控制矩形与窗口的背景形成了严重的对比。




查看完整回答
反对 回复 2019-10-22
  • 2 回答
  • 0 关注
  • 297 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信