1
public class Test
2
{
3
private bool drawing;
4
private Point beginPoint;
5
private Point endPoint;
6
private Size size = new Size();
7
8
public Test()
9
{
10
InitializeComponent();
11
}
12
13
protected override void OnPaint(PaintEventArgs e)
14
{
15
if (drawing)
16
{
17
size.Width = endPoint.X - beginPoint.X;
18
size.Height = endPoint.Y - beginPoint.Y;
19
20
if (size.Width >= 0 && size.Height >= 0)
21
{
22
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(beginPoint, size));
23
}
24
else
25
{
26
if (size.Width <= 0 && size.Height <= 0)
27
{
28
size.Width = Math.Abs(size.Width);
29
size.Height = Math.Abs(size.Height);
30
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(endPoint, size));
31
}
32
else
33
{
34
if (size.Width > 0)
35
{
36
size.Width = Math.Abs(size.Width);
37
size.Height = Math.Abs(size.Height);
38
int x = beginPoint.X;
39
int y = endPoint.Y;
40
Point p = new Point(x, y);
41
42
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(p, size));
43
}
44
else
45
{
46
size.Width = Math.Abs(size.Width);
47
size.Height = Math.Abs(size.Height);
48
int x = endPoint.X;
49
int y = beginPoint.Y;
50
Point p = new Point(x, y);
51
52
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(p, size));
53
}
54
}
55
}
56
57
}
58
base.OnPaint(e);
59
}
60
61
private void Test_MouseMove(object sender, MouseEventArgs e)
62
{
63
if (drawing)
64
{
65
endPoint = e.Location;
66
Invalidate();
67
}
68
}
69
70
private void Test_MouseUp(object sender, MouseEventArgs e)
71
{
72
drawing = false;
73
endPoint = e.Location;
74
}
75
76
private void Test_MouseDown(object sender, MouseEventArgs e)
77
{
78
drawing = true;
79
beginPoint = e.Location;
80
}
81
82
}
public class Test2
{3
private bool drawing;4
private Point beginPoint;5
private Point endPoint;6
private Size size = new Size();7

8
public Test()9
{10
InitializeComponent();11
}12

13
protected override void OnPaint(PaintEventArgs e)14
{15
if (drawing)16
{17
size.Width = endPoint.X - beginPoint.X;18
size.Height = endPoint.Y - beginPoint.Y;19

20
if (size.Width >= 0 && size.Height >= 0)21
{22
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(beginPoint, size));23
}24
else25
{26
if (size.Width <= 0 && size.Height <= 0)27
{28
size.Width = Math.Abs(size.Width);29
size.Height = Math.Abs(size.Height);30
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(endPoint, size));31
}32
else33
{34
if (size.Width > 0)35
{36
size.Width = Math.Abs(size.Width);37
size.Height = Math.Abs(size.Height);38
int x = beginPoint.X;39
int y = endPoint.Y;40
Point p = new Point(x, y);41

42
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(p, size));43
}44
else45
{46
size.Width = Math.Abs(size.Width);47
size.Height = Math.Abs(size.Height);48
int x = endPoint.X;49
int y = beginPoint.Y;50
Point p = new Point(x, y);51

52
e.Graphics.DrawRectangle(Pens.Red, new Rectangle(p, size));53
}54
}55
}56

57
}58
base.OnPaint(e);59
}60

61
private void Test_MouseMove(object sender, MouseEventArgs e)62
{63
if (drawing)64
{65
endPoint = e.Location;66
Invalidate();67
}68
}69

70
private void Test_MouseUp(object sender, MouseEventArgs e)71
{72
drawing = false;73
endPoint = e.Location;74
}75

76
private void Test_MouseDown(object sender, MouseEventArgs e)77
{78
drawing = true;79
beginPoint = e.Location;80
}81

82
}
