如何绘制.Net表格中的绘图而不闪烁?

时间:2012-07-21 12:22:15

标签: c# winforms graphics

我想在面板中绘制一个绘图,每100毫秒600点。当我使用Graphics对象并简单地绘制椭圆时,屏幕会闪烁!如何有效地绘制这样的图表而不闪烁?!

2 个答案:

答案 0 :(得分:0)

停止此操作的一种简单方法是打开双缓冲。您的表单具有双缓冲属性,您可以将其设置为true。

或者,如果它支持,有时您可以在控件上执行此操作。

e.g。

class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        this.DoubleBuffered = true;
    }
}

答案 1 :(得分:0)

需要通过继承打开面板的双缓冲:

public class BufferedPanel : Panel {
  public BufferedPanel() {
    this.DoubleBuffered = true;
    this.ResizeRedraw = true;
  }
}

然后确保使用控件的实际绘制事件:

public Form1() {
  InitializeComponent();
  bufferedPanel1.Paint += bufferedPanel1_Paint;
}

private void bufferedPanel1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.DrawSomething(...);
}

避免使用CreateGraphics(),因为那只是临时图纸。