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

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

如何设置受保护的DoubleBuffered窗体上受闪烁影响的控件的属性?



牧羊人nacy
浏览 828回答 3
3回答

holdtom

查帐这条线重复这个答案的核心,您可以在窗口上打开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的版本只在一个控件上工作。您仍然会看到每个单独的控件绘制本身。这看起来也像闪烁的效果,特别是如果未绘制的控制矩形与窗口的背景形成了严重的对比。

慕虎7371278

System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control)     .GetProperty("DoubleBuffered", System.Reflection.BindingFlags.NonPublic |     System.Reflection.BindingFlags.Instance);aProp.SetValue(ListView1, true, null);伊恩有关于在终端服务器上使用此功能的更多信息。
打开App,查看更多内容
随时随地看视频慕课网APP