看了些文章,选择一个自己试验效果较好的来记录一下,方便日后检索。算个人总结。
1.在构造函数中,执行
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
2.在Paint事件响应函数中,执行
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;
BufferedGraphics myBuffer = currentContext.Allocate(e.Graphics, e.ClipRectangle);
Graphics g = myBuffer.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
g.Clear(this.BackColor);
//使用g进行绘图
myBuffer.Render(e.Graphics);
g.Dispose();
myBuffer.Dispose();//释放资源
这个测试效果很好,已经无闪烁了。
原文见:
C#画图闪烁问题

本文介绍了一种在C#中通过优化双缓冲和使用BufferedGraphics技术来消除画图闪烁的方法,详细步骤包括在构造函数中设置样式、在Paint事件中分配和渲染图形,并最终释放资源,实验效果显著提升。
1391

被折叠的 条评论
为什么被折叠?



