C#窗体控件中使用双缓冲绘图

C#窗体控件中使用双缓冲绘图

在PictureBox控件中使用双缓冲绘图,我就不讲原理了,网上一大推,直接上代码,自己总结的用了都没问题。
方法一:

			Bitmap image = new Bitmap(PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height);
            Graphics g = Graphics.FromImage(image);
            g.Clear(PictureBox1.BackColor);
            g.SmoothingMode = SmoothingMode.HighQuality; //高质量
            g.PixelOffsetMode = PixelOffsetMode.HighQuality; //高像素偏移质量
            /************下面是绘图代码段***********/
            for (int k = 1; k < 386; k++)
            {
                g.FillRectangle(new SolidBrush(Color.Red), m_point[k, 0] - 1, m_point[k, 1] - 1, 2, 2);
            }
            /***********上面是绘图代码段************/
            PictureBox1.CreateGraphics().DrawImage(image, 0, 0);
            g.Dispose();
            image.Dispose();

方法二:

			BufferedGraphicsContext MyBufferedGraphics = new BufferedGraphicsContext();
            BufferedGraphics MyBuffer = MyBufferedGraphics.Allocate(PictureBox1.CreateGraphics(),PictureBox1.ClientRectangle);//创建一个缓冲图像MyBuffer
            MyBufferedGraphics.MaximumBuffer = new Size(PictureBox1.ClientRectangle.Width,PictureBox1.ClientRectangle.Height);//指定缓冲图像背景类的大小 
            MyBuffer.Graphics.FillRectangle(Brushes.WhiteSmoke,PictureBox1.CreateGraphics().ClipBounds);//指定图像背景色
            MyBuffer.Graphics.Clear(this.BackColor);
            /************下面是绘图代码段***********/
            for (int k = 1; k < 386; k++)
            {
                MyBuffer.Graphics.FillRectangle(new SolidBrush(Color.Red), m_point[k, 0] - 1, m_point[k, 1] - 1, 2, 2);
            }      
            /***********上面是绘图代码段************/
            MyBuffer.Render();//将画好的圆显示到窗口当中
            MyBuffer.Dispose();//释放资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值