关于C#双缓冲处理(BufferedGraphicsContext对象)
https://blog.csdn.net/keep_silence_/article/details/7849880
https://blog.csdn.net/acs713/article/details/16359551
看了以上两个网址总结一下吧,因为现在研究的是C#所以重点只放在C#的BufferedGraphicsContext对象身上。
按照第二个网址贴出的代码会覆盖原本的绘图层出现 全部黑色背景。
总结两段代码
private void Show(Control control) { // 创建缓冲图形上下文 BufferedGraphicsContext bct = new BufferedGraphicsContext(); // 创建指定大小缓冲区 BufferedGraphics bg = bct.Allocate(control.CreateGraphics(), new Rectangle(new Point (0,0),control.Size)); //创建GDI+画图区域 Graphics g = bg.Graphics; //清除背景颜色(变为默认背景颜色) g.Clear(this.BackColor); //跟平常Graphics绘图一样 Pen p = new Pen(Color.Red, 1); g.DrawRectangle(p,5,5,50,50); // 将双缓冲区中的图形渲染到指定画布上 bg.Render(control.CreateGraphics()); //释放 bg.Dispose(); g.Dispose(); }
重复可用,简单。
关于双缓冲原理解释,上面第二个链接讲得还是很通俗易懂的。