📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace DrawLine
{
public partial class Form1 : Form
{
Image BG_Img;
Point OldPos = new Point(-1, -1);
Point CurPos = new Point(0, 0);
public Form1()
{
InitializeComponent();
BG_Img = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// 放弃最后一次未确认的线条
Graphics g = this.CreateGraphics();
SolidBrush brush = new SolidBrush(this.BackColor);
g.FillRectangle(brush, ClientRectangle);
g.DrawImage(BG_Img, new Point(0, 0));
OldPos.X = -1;
g.Dispose();
return;
}
if (OldPos.X == -1)
{
OldPos = CurPos;
return;
}
// 绘制确认的线条到BG_Img上
Graphics g1 = Graphics.FromImage(BG_Img);
g1.DrawLine(new Pen(Color.Red, 1), OldPos, CurPos);
OldPos = CurPos;
g1.Dispose();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
CurPos = new Point(e.X, e.Y);
if (OldPos.X == -1)
return;
// 创建临时绘图板
Image tempImg = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
Graphics g1 = Graphics.FromImage(tempImg);
SolidBrush brush = new SolidBrush(this.BackColor);
g1.FillRectangle(brush, ClientRectangle);
// 加载已绘图形
g1.DrawImage(BG_Img, new Point(0, 0));
// 绘制临时线
g1.DrawLine(new Pen(Color.Red, 1), OldPos, CurPos);
// 显示到窗口上
Graphics g = this.CreateGraphics();
g.DrawImage(tempImg, new Point(0, 0));
g.Dispose();
g1.Dispose();
tempImg.Dispose();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -