关于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();
        }

重复可用,简单。

关于双缓冲原理解释,上面第二个链接讲得还是很通俗易懂的。 

posted @ 2018-07-23 16:45  请多指教9  阅读(460)  评论(0编辑  收藏  举报