如何禁止WinForm 上的Control重绘? 在Control的Paint事件中,我对它需要进行重绘,期间包含了很多DrawLine动作,每次执行一下DrawLine,对应的线就会在窗体上显示出来。现在我想把线一次性全部画好,再一次性显示出来,请教方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵double buffer可以完成你的功能,你可以在内存中生成一个bitmap,在内存中画好了再贴到窗体上去。网上有很多现成的代码,拿来就可以用。 恩,你可以看看愚翁的blog,上面写的非常详细 我也是刚学double buffer不久,有些好东西, 分享一下:实现双缓冲的具体步骤:1、在内存中建立一块“虚拟画布”:Bitmap bmp = new Bitmap(600, 600);2、获取这块内存画布的Graphics引用:Graphics g = Graphics.FromImage(bmp);3、在这块内存画布上绘图:g.FillEllipse(brush, i * 10, j * 10, 10, 10);4、将内存画布画到窗口中this.CreateGraphics().DrawImage(bmp, 0, 0);总结怎么样?是不是很简单?但是正是这个简单的操作大大提高了绘图效率,所以如果你需要进行GDI+图形编程,双缓冲技术一定要掌握,特别是在进行大量图形绘制刷新的情况下要尽量采用。 this.SetStyle( ControlStyles.AllPaintingInWmPaint ControlStyles.UserPaint ControlStyles.DoubleBuffer, true);试试添上这句话 SetStyle(ControlStyles.AllPaintingInWmPaint| ControlStyles.UserPaint|ControlStyles.DoubleBuffer,true); 恩 dyw31415926(dyw31415926)说的很详细,不用我来添乱了。:-) SetStyle(ControlStyles.AllPaintingInWmPaint| ControlStyles.UserPaint|ControlStyles.DoubleBuffer,true);没有用 C#如何将textbox实时更新的数据自动保存到Excel里面呢 DataGridView单元格放多个图片 为什么这样? 在线等怎么控制一个text文本框里输入的格式是IP的格式数据库是字符型的 如何在c#用FindWindow和SendMessage进行win程序的安装 如何使用C#读取文本文件中的矩阵文件,并对读取的矩阵进行运算 水晶报表9.2.3300.0版本中,怎样传递参数,谢谢 SqlDataAccess类的用法 哪个大哥帮我看看这个VS.Net的问题... 服务程序打包问题 求一加密、解密算法 小女子工作初期,老板出的问题不太会,求救!
网上有很多现成的代码,拿来就可以用。
实现双缓冲的具体步骤:1、在内存中建立一块“虚拟画布”:Bitmap bmp = new Bitmap(600, 600);2、获取这块内存画布的Graphics引用:Graphics g = Graphics.FromImage(bmp);3、在这块内存画布上绘图:g.FillEllipse(brush, i * 10, j * 10, 10, 10);4、将内存画布画到窗口中this.CreateGraphics().DrawImage(bmp, 0, 0);总结怎么样?是不是很简单?但是正是这个简单的操作大大提高了绘图效率,所以如果你需要进行GDI+图形编程,双缓冲技术一定要掌握,特别是在进行大量图形绘制刷新的情况下要尽量采用。
试试添上这句话