My question is related to Stack Overflow question Draw lines on a picturebox using mouse clicks in C#, but when the mouse button is up, the drawn line disappears. H
Here is a small complete program that does draw lines based on points (in this case, it follows the mouse). I think you can rework that into what you need.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Variable that will hold the point from which to draw the next line
Point latestPoint;
private void GainBox_MouseDown(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
// Remember the location where the button was pressed
latestPoint = e.Location;
}
}
private void GainBox_MouseMove(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
using (Graphics g = GainBox.CreateGraphics())
{
// Draw next line and...
g.DrawLine(Pens.Red, latestPoint, e.Location);
// ... Remember the location
latestPoint = e.Location;
}
}
}
}
One problem in your solution is that you are drawing on a temporary bitmap, but the image in that bitmap is never transferred to your PictureBox. In the solution presented here, there isn't any extra bitmap needed.
gainbox.refresh() should stay inside the if (mouse_dn) clause.
Use Graphics Object to Drawline
e.g.
Graphics gfx = GainBox.CreateGraphics();
gfx.Drawline([Your Parameters here]);