예제 #1
0
        private void Canvas_MouseUp(object sender, MouseEventArgs e)
        {
            canvas.Focus();

            if (e.Button == MouseButtons.Left && selectionBegin)
            {
                canvas.UnselectAll();

                PointF selectionStart = selectionBox.Points[0];
                PointF selectionEnd   = selectionBox.Points[2];

                PointF selectionOrigin = new PointF();
                SizeF  selectionSize   = new SizeF();

                selectionSize.Width  = Math.Abs(selectionEnd.X - selectionStart.X);
                selectionSize.Height = Math.Abs(selectionEnd.Y - selectionStart.Y);

                if (selectionEnd.X > selectionStart.X)
                {
                    if (selectionEnd.Y > selectionStart.Y)
                    {
                        selectionOrigin.X = selectionStart.X;
                        selectionOrigin.Y = selectionStart.Y;
                    }
                    else
                    {
                        selectionOrigin.X = selectionStart.X;
                        selectionOrigin.Y = selectionEnd.Y;
                    }
                }
                else
                {
                    if (selectionEnd.Y > selectionStart.Y)
                    {
                        selectionOrigin.X = selectionEnd.X;
                        selectionOrigin.Y = selectionStart.Y;
                    }
                    else
                    {
                        selectionOrigin.X = selectionEnd.X;
                        selectionOrigin.Y = selectionEnd.Y;
                    }
                }

                RectangleF rect = new RectangleF(selectionOrigin.X,
                                                 selectionOrigin.Y,
                                                 selectionSize.Width,
                                                 selectionSize.Height);

                float square = selectionSize.Width * selectionSize.Height;

                if (square >= 4.0F)
                {
                    List <CanvasItem> items = canvas.BoxTest(rect);

                    if (items.Count != 0)
                    {
                        foreach (var item in items)
                        {
                            item.Select();
                        }

                        canvas.Invalidate();
                    }
                }

                canvas.RemoveItem(selectionBox);
                selectionBox = null;

                selectionBegin = false;
                canvas.Invalidate();
            }

            else if (e.Button == MouseButtons.Left && draggingBegin)
            {
                draggingBegin = false;
                canvas.Cursor = Cursors.Default;
            }

            else if (e.Button == MouseButtons.Right && scrollingBegin)
            {
                scrollingBegin = false;
                canvas.Cursor  = Cursors.Default;
            }
        }