C# Picturebox控件上画图闪烁问题的解决方案
Graphics g = e.Graphics; //注意,这里千万不可用Graphics g = this.CreateGraphics() 获得绘图变量。否则闪烁将非常厉害。 Bitmap b = new Bitmap(this.Width, this.Height); Graphics dc = Graphics.FromImage((System.Drawing.Image)b); //将要绘制的内容绘制到dc上 g.DrawImage(b, 0, 0); dc.Dispose();
使用实例:
private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; //注意,这里千万不可用Graphics g = this.CreateGraphics() 获得绘图变量。否则闪烁将非常厉害。 Bitmap b = new Bitmap(this.Width, this.Height); Graphics gg = Graphics.FromImage((System.Drawing.Image)b); Pen bi = new Pen(Color.Blue, 2); for (int i = 0; i < 1; i++) { Point p1 = new Point(PixCor[i, 1], PixCor[i, 2]); Point p2 = new Point(PixCor[i, 3], PixCor[i, 4]); Point p3 = new Point(PixCor[i, 5], PixCor[i, 6]); Point p4 = new Point(PixCor[i, 7], PixCor[i, 8]); gg.DrawLine(bi, p1, p2); gg.DrawLine(bi, p2, p3); gg.DrawLine(bi, p3, p4); gg.DrawLine(bi, p4, p1); } gg.Dispose(); //将要绘制的内容绘制到dc上 g.DrawImage(b, 0, 0); gg.Dispose();
}