c# 双缓冲(防止闪屏)

Posted on 2010-12-23 13:19  严武  阅读(2695)  评论(0编辑  收藏  举报

//   该调用是   Windows.Forms   窗体设计器所必需的。
InitializeComponent();
//   TODO:   在   InitComponent   调用后添加任何初始化
this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);

//开启双缓冲
this.SetStyle(ControlStyles.DoubleBuffer,true);
this.SetStyle(ControlStyles.UserPaint,true);
this.SetStyle(ControlStyles.ResizeRedraw,true);

 

1、在内存中建立一块“虚拟画布”:

Bitmap bmp = new Bitmap(600, 600);

  2、获取这块内存画布的Graphics引用:

Graphics g = Graphics.FromImage(bmp);

  3、在这块内存画布上绘图:

g.FillEllipse(brush, i * 10, j * 10, 10, 10);

  4、将内存画布画到窗口中

this.CreateGraphics().DrawImage(bmp, 0, 0);

还有的方式
在构造函数中加如下代码

代码一:
      SetStyle(ControlStyles.UserPaint, true);
      SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
      SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

代码二:
   this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
   this.UpdateStyles();

Copyright © 2024 严武
Powered by .NET 9.0 on Kubernetes