C# 没有背景层的PICTUREBOX重绘闪烁解决办法

最近做一个医疗器械项目 终端的软件需要显示波形 但是在picturebox 重绘时发现闪烁现象严重

问题原因:重绘时调用picture的refresh 即在重绘间 会有一次picturebox什么也不显示 人眼看上去就像是闪烁。

解决思路:将重绘时下一张图片作为背景贴在picturebox上 代码如下 此时不需要refresh函数

Bitmap image = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height);
                Graphics g = Graphics.FromImage(image);

                // 绘图部分 Begin
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;   //开启平滑处理

                Pen p2 = new Pen(Color.White, 1);//定义了一个白色,宽度为1的画笔
                g.DrawLine(p2, 0, 40, 2400, 40);   //画基准线
                p2.Dispose();
                Pen p = new Pen(Color.LimeGreen, 3);//定义了一个亮绿,宽度为3的画笔
                g.DrawLines(p, point);//在画板上画波形图
                p.Dispose();

                //画波形截取线
                Pen p3 = new Pen(Color.Red, 2);//定义了一个蓝色,宽度为的画笔
                g.DrawLine(p3, posx1, 0, posx1, 80);
                p3.Dispose();
                Pen p4 = new Pen(Color.Yellow, 2);//定义了一个蓝色,宽度为的画笔
                g.DrawLine(p4, posx2, 0, posx2, 80);   //画基准线
                p4.Dispose();

                g.Dispose();
                // 绘图部分 End

                pictureBox1.BackgroundImage = image; // 设置为背景层

思考:1 就算有refresh也应该很快 为何人眼能感觉到

2 这段代码如果添加image的dispose就会 错 不知道为何

3 若有picturebox本身有背景 参阅http://blueve.me/archives/633




声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年6月28日
下一篇 2015年6月28日

相关推荐