예제 #1
0
        private void StartRegionSelection()
        {
            if (IsCursorOnNode)
            {
                return;
            }

            InputManager.Update(Form); // If it's a touch event we don't have the correct point yet, so refresh it now

            BaseShape shape = GetIntersectShape();

            if (shape != null && shape.ShapeType == CurrentTool) // Select shape
            {
                IsMoving = true;
                shape.OnMoving();
                Form.Cursor  = Cursors.SizeAll;
                CurrentShape = shape;
                SelectCurrentShape();
            }
            else if (!IsCreating) // Create new shape
            {
                DeselectCurrentShape();

                shape = AddShape();
                shape.OnCreating();
            }
        }
예제 #2
0
        private void form_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
            case Keys.ControlKey:
                IsCornerMoving = true;
                break;

            case Keys.ShiftKey:
                IsProportionalResizing = true;
                break;

            case Keys.Menu:
                IsSnapResizing = true;
                break;

            case Keys.Left:
            case Keys.A:
                isLeftPressed = true;
                break;

            case Keys.Right:
            case Keys.D:
                isRightPressed = true;
                break;

            case Keys.Up:
            case Keys.W:
                isUpPressed = true;
                break;

            case Keys.Down:
            case Keys.S:
                isDownPressed = true;
                break;
            }

            switch (e.KeyData)
            {
            case Keys.Insert:
                if (IsCreating)
                {
                    EndRegionSelection();
                }
                else
                {
                    StartRegionSelection();
                }
                break;

            case Keys.Delete:
                DeleteCurrentShape();

                if (IsCreating)
                {
                    EndRegionSelection();
                }
                break;

            case Keys.Shift | Keys.Delete:
                DeleteAllShapes();
                break;

            case Keys.F1:
                Options.ShowHotkeys = !Options.ShowHotkeys;
                if (tsmiTips != null)
                {
                    tsmiTips.Checked = Options.ShowHotkeys;
                }
                break;
            }

            if (!IsCreating)
            {
                if (Form.Mode == RegionCaptureMode.Annotation)
                {
                    switch (e.KeyData)
                    {
                    case Keys.Tab:
                        SwapShapeType();
                        break;

                    case Keys.NumPad0:
                        CurrentTool = ShapeType.RegionRectangle;
                        break;
                    }
                }

                if (Form.IsAnnotationMode)
                {
                    switch (e.KeyData)
                    {
                    case Keys.NumPad1:
                        CurrentTool = ShapeType.DrawingRectangle;
                        break;

                    case Keys.NumPad2:
                        CurrentTool = ShapeType.DrawingEllipse;
                        break;

                    case Keys.NumPad3:
                        CurrentTool = ShapeType.DrawingFreehand;
                        break;

                    case Keys.NumPad4:
                        CurrentTool = ShapeType.DrawingLine;
                        break;

                    case Keys.NumPad5:
                        CurrentTool = ShapeType.DrawingArrow;
                        break;

                    case Keys.NumPad6:
                        CurrentTool = ShapeType.DrawingTextOutline;
                        break;

                    case Keys.NumPad7:
                        CurrentTool = ShapeType.DrawingStep;
                        break;

                    case Keys.NumPad8:
                        CurrentTool = ShapeType.EffectBlur;
                        break;

                    case Keys.NumPad9:
                        CurrentTool = ShapeType.EffectPixelate;
                        break;

                    case Keys.Control | Keys.V:
                        PasteFromClipboard(true);
                        break;

                    case Keys.Control | Keys.Z:
                        UndoShape();
                        break;

                    case Keys.Home:
                        MoveCurrentShapeTop();
                        break;

                    case Keys.End:
                        MoveCurrentShapeBottom();
                        break;

                    case Keys.PageUp:
                        MoveCurrentShapeUp();
                        break;

                    case Keys.PageDown:
                        MoveCurrentShapeDown();
                        break;

                    case Keys.Q:
                        Options.QuickCrop     = !Options.QuickCrop;
                        tsmiQuickCrop.Checked = !Options.QuickCrop;
                        break;
                    }
                }
            }

            int speed;

            if (e.Shift)
            {
                speed = RegionCaptureOptions.MoveSpeedMaximum;
            }
            else
            {
                speed = RegionCaptureOptions.MoveSpeedMinimum;
            }

            int x = 0;

            if (isLeftPressed)
            {
                x -= speed;
            }

            if (isRightPressed)
            {
                x += speed;
            }

            int y = 0;

            if (isUpPressed)
            {
                y -= speed;
            }

            if (isDownPressed)
            {
                y += speed;
            }

            if (x != 0 || y != 0)
            {
                BaseShape shape = CurrentShape;

                if (shape == null || IsCreating)
                {
                    Cursor.Position = Cursor.Position.Add(x, y);
                }
                else
                {
                    if (e.Control)
                    {
                        shape.OnMoving();
                        shape.Move(x, y);
                    }
                    else
                    {
                        shape.OnResizing();
                        shape.Resize(x, y, !e.Alt);
                    }
                }
            }
        }