C# GDI+双缓冲绘图,防止闪烁
using System;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
//双缓冲的变量定义
bool buffer=true;
Bitmap bit = new Bitmap(500,360);
Graphics gra;
Graphics gra_1;
Graphics gra_2;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//双缓冲的变量赋值
gra = Graphics.FromImage(bit);
gra_1 = pictureBox1.CreateGraphics();
gra_2 = pictureBox1.CreateGraphics();
}
private void Delay_time(object sender, EventArgs e)//Delay_time是一个计时器到期事件触发的方法
{
此处为画图的代码,需要在gra上进行绘画。
例如: gra.FillRectangle(刷子颜色, 0, 0, 10, 10);
//以下是双缓冲的实现
if (buffer)
{
gra_1.DrawImage(bit, 0, 0);
buffer = false;
gra.Clear(System.Drawing.SystemColors.Control);
}
else if (!buffer)
{
gra_2.DrawImage(bit, 0, 0);
buffer = true;
gra.Clear(System.Drawing.SystemColors.Control);
}
}
}