如何在不闪烁的情况下以.Net形式绘制绘图



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

停止这种情况的一个简单方法是打开双缓冲。您的表单有一个可以设置为true的双缓冲属性。

或者有时你可以在控制上做这件事,如果它支持的话

例如

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

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

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(),因为它只是一个临时图形。

相关内容

  • 没有找到相关文章

最新更新