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    }
posted on 2007-06-04 17:50  xiaowy  阅读(725)  评论(0编辑  收藏  举报