C#:点击鼠标画线,线随着鼠标移动直到最终确定终点

原理:
1、点击鼠标时,开始画线操作 ;
2、每次移动鼠标过程中,将旧的线擦除,再画新的线;
3、再次点击鼠标时,停止画线操作。

有时窗体滚动,会导致画的线丢失,后附解决方法


bool BoolDrawing = false;
Point PointStart, PointEnd;
private void pictureBox2_MouseDown(object sender, MouseEventArgs e)
{
	if (!BoolDrawing)
	{
		BoolDrawing = true;
		PointStart.X = e.X;
		PointStart.Y = e.Y;
		PointEnd.X = e.X;
		PointEnd.Y = e.Y;
	}
	else
	{
		BoolDrawing = false;
		PointEnd.X = e.X;
		PointEnd.Y = e.Y;
	}
}

private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
{
	if (BoolDrawing)
	{
		Graphics g = pictureBox2.CreateGraphics();
		Pen penFG = new Pen(Color.Black);//前景色
		Pen penBG = new Pen(this.BackColor);//背景色,用来擦除旧的使用

		g.DrawLine(penBG, PointStart, PointEnd); //擦旧

		PointEnd.X = e.X;
		PointEnd.Y = e.Y;
		g.DrawLine(penFG, PointStart, PointEnd);
	}
}

//有时窗体滚动,会导致画的线丢失,解决方法如下:
//将画的线变成图片
//将Graphics g = pictureBox2.CreateGraphics();换成
Image img = new Bitmap(900, 900);
Graphics g = Graphics.FromImage(img);
//......
pictureBox2.Image = img;

你可能感兴趣的:(c#,画线,随鼠标,移动)