小白摸索着编写一个上位机界面,将遇到的问题及解决方法记录下,以供后来的小白使用哈。这篇文章解决的问题是在绘图时候的闪烁问题。其中网上有些介绍的设置控制方式controlstyle的方法,这个方法我的理解是比较适合于在一个完整的窗口当中绘图。如果要在一个窗口当中的内部容器或者控件内画图的话就不太适合,通常按照前述的方法设置后没有任何效果。对于在窗口内部的绘图的来说,比较有效的方法是在内存当中开辟一块区域,先在内存中绘制好图后再在窗体中显示出来。这个方法可以有效的消除或者减轻绘图闪烁的问题。在C#中,提供了BufferedGraphics类来实现此功能。这篇文章就介绍如何用C#自带的类来实现双缓冲绘图。
直接贴出完整的代码
private void Form1_Paint(object sender, PaintEventArgs e)
{
//创建一个缓冲图像背景类 MyBufferedGraphics
BufferedGraphics MyBuffer = MyBufferedGraphics.Allocate(panel1.CreateGraphics(), panel1.ClientRectangle);//创建一个缓冲图像MyBuffer
MyBufferedGraphics.MaximumBuffer = new Size(panel1.ClientRectangle.Width, panel1.ClientRectangle.Height);//指定缓冲图像背景类的大小 MyBuffer.Graphics.FillRectangle(Brushes.WhiteSmoke,panel1.CreateGraphics().ClipBounds);//指定图像背景色
MyBuffer.Graphics.DrawEllipse(new P