I am trying to make a simple paint program in C #, but it continues to flicker when I draw, for example, I need some kind of double buffering, but I donโt know how to do it.
I draw Panel and I use Bitmap to store graphics.
Here is my code:
public partial class Form1 : Form { private Bitmap drawing; private bool leftDown = false; private int prevX; private int prevY; private int currentX; private int currentY; public Form1() { InitializeComponent(); drawing = new Bitmap(panel1.Width, panel1.Height); } private void panel1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { leftDown = true; prevX = eX; prevY = eY; } } private void panel1_MouseMove(object sender, MouseEventArgs e) { if (leftDown) { Graphics g = Graphics.FromImage(drawing); currentX = eX; currentY = eY; g.DrawLine(new Pen(Color.Black), new Point(currentX, currentY), new Point(prevX, prevY)); panel1.Invalidate(); prevX = currentX; prevY = currentY; g.Dispose(); } } private void panel1_MouseUp(object sender, MouseEventArgs e) { leftDown = false; } private void panel1_MouseLeave(object sender, EventArgs e) { leftDown = false; } private void panel1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImageUnscaled(drawing, 0, 0); } }
source share