看了好多帖子,都说什么双缓冲的之类的,都用了,都不见效,大概天生愚笨不开窍,呵呵。不过我初学C#,有时候不知道大侠们说的那些都该添到哪里,请大家明示!
代码如下:
Rectangle rect = e.ClipRectangle;
currentContext = BufferedGraphicsManager.Current;
myBuffer = currentContext.Allocate(e.Graphics, e.ClipRectangle); Graphics g = myBuffer.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
g.Clear(Color.White); if (m_draw == true)
g.DrawLine(pen, cur_X, cur_Y, mov_X, mov_Y); if (com_count != 0)
{
for (int i = 1; i <= ap_count; i++) //遍历ap所有的连接
{
g.DrawLine(pen, ap[i].getOx() + w1 / 2, ap[i].getOy() + h1 / 2, ap[int.Parse(s.Substring(2))].getOx() + w2 / 2, ap[int.Parse(s.Substring(2))].getOy() + h2 / 2);
}
}
myBuffer.Render(e.Graphics);
g.Dispose();
myBuffer.Dispose();//释放资源
代码如下:
Rectangle rect = e.ClipRectangle;
currentContext = BufferedGraphicsManager.Current;
myBuffer = currentContext.Allocate(e.Graphics, e.ClipRectangle); Graphics g = myBuffer.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
g.Clear(Color.White); if (m_draw == true)
g.DrawLine(pen, cur_X, cur_Y, mov_X, mov_Y); if (com_count != 0)
{
for (int i = 1; i <= ap_count; i++) //遍历ap所有的连接
{
g.DrawLine(pen, ap[i].getOx() + w1 / 2, ap[i].getOy() + h1 / 2, ap[int.Parse(s.Substring(2))].getOx() + w2 / 2, ap[int.Parse(s.Substring(2))].getOy() + h2 / 2);
}
}
myBuffer.Render(e.Graphics);
g.Dispose();
myBuffer.Dispose();//释放资源
解决方案 »
- 请问datagridview的datasource的默认属性是什么
- 如何使鼠标事件失效
- 娃哈哈,看我写的五子棋程序,,。。。。。娃哈哈
- 统计记录出现的次数(升级版)
- 用Graphics绘制图形时闪烁的问题
- checkbox的入门问题
- 求助!WPF中canvas保存成矢量图Emf/Wmf
- 水晶报表显示图片类型的字段
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- 怎么样把DataSet里的表的 当前行的下一行 设置为 当前行?(也就是移动行指针)
- C#winforms如何禁止同一个程序运行两次?
- 登陆问题
双缓冲还是很有效的, 如果有问题, 一般是没有写好。
看看这个