示例#1
0
        private void keyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.ControlKey)
            {
                this.isCtrlPressed = true;
            }
            if (e.KeyCode == Keys.G)
            {
                if (this.isCtrlPressed)
                {
                    if (selectedObject.getObjectList().Count() == 1 && selectedObject.getObjectList()[0] is Group)
                    {
                        this.ungroupSelectedObject((Group)selectedObject.getObjectList()[0]);
                    }
                    else
                    {
                        this.groupSelectedObject();
                    }
                }
            }
            if (e.KeyCode == Keys.Z)
            {
                if (this.isCtrlPressed)
                {
                    if (undoStack.Count != 0)
                    {
                        IMemento memento = undoStack.Pop();
                        foreach (DrawingObject drawingObject in memento.getCurrent())
                        {
                            drawingObjectList.Remove(drawingObject);
                        }
                        foreach (DrawingObject drawingObject in memento.getPrevious())
                        {
                            if (drawingObject != null)
                            {
                                drawingObjectList.Add(drawingObject);
                            }
                        }

                        redoStack.Push(new Memento(memento.getPrevious(), memento.getCurrent()));
                        this.drawCanvas();
                    }
                }
            }
            if (e.KeyCode == Keys.Y)
            {
                if (this.isCtrlPressed)
                {
                    if (redoStack.Count != 0)
                    {
                        IMemento memento = redoStack.Pop();
                        foreach (DrawingObject drawingObject in memento.getCurrent())
                        {
                            if (drawingObject != null)
                            {
                                drawingObjectList.Remove(drawingObject);
                            }
                        }
                        foreach (DrawingObject drawingObject in memento.getPrevious())
                        {
                            drawingObjectList.Add(drawingObject);
                        }

                        undoStack.Push(new Memento(memento.getPrevious(), memento.getCurrent()));
                        this.drawCanvas();
                    }
                }
            }
            if (e.KeyCode == Keys.R)
            {
                if (this.isCtrlPressed)
                {
                    if (selectedObject.getState() is EditState || selectedObject.getState() is RotateState)
                    {
                        selectedObject.select();
                        this.drawCanvas();
                    }
                }
            }
        }