示例#1
0
        public MainPage()
        {
            this.InitializeComponent();

            // Instantiate lists and stacks to keep track of the state
            _shapeList = new List <PaintBase>();
            _undoStack = new Stack <List <PaintBase> >();
            _redoStack = new Stack <List <PaintBase> >();

            // Initialize invokers for the command pattern
            _canvasInvoker = new ClickInvoker();
            _userInvoker   = new UserActionInvoker();

            // Set initial selection to circle
            CircleToggle.IsChecked = true;
            _cmd = new DrawShapeCommand(this)
            {
                ShapeType = CircleShape.Instance
            };

            // Set canvas Z indici
            Canvas.SetZIndex(BottomPanel, 100);
            Canvas.SetZIndex(TopBar, 100);
            Canvas.SetZIndex(ShapeList, 100);
        }
示例#2
0
        /// <summary>
        /// Handles UI toggles
        /// </summary>
        private void BrushToggle_OnClick(object sender, RoutedEventArgs e)
        {
            if (sender is AppBarToggleButton button)
            {
                // Make sure all toggles are off before turning a new one on
                ClickSelectToggle.IsChecked = false;
                SelectToggle.IsChecked      = false;
                MoveToggle.IsChecked        = false;
                ScaleToggle.IsChecked       = false;
                CircleToggle.IsChecked      = false;
                RectangleToggle.IsChecked   = false;
                EditDecorator.IsChecked     = false;

                // Check what button is toggled and change the active command accordingly
                switch (button.Name)
                {
                case "ClickSelectToggle":
                    ClickSelectToggle.IsChecked = true;
                    _cmd = new ClickSelectCommand(this);
                    break;

                case "SelectToggle":
                    SelectToggle.IsChecked = true;
                    _cmd = new SelectCommand(this);
                    break;

                case "EditDecorator":
                    EditDecorator.IsChecked = true;
                    _cmd = new ChangeDecoratorCommand(this);
                    break;

                case "MoveToggle":
                    MoveToggle.IsChecked = true;
                    _cmd = new MoveCommand(this);
                    break;

                case "ScaleToggle":
                    ScaleToggle.IsChecked = true;
                    _cmd = new ScaleCommand(this);
                    break;

                case "RectangleToggle":
                    RectangleToggle.IsChecked = true;
                    _cmd = new DrawShapeCommand(this)
                    {
                        ShapeType = RectangleShape.Instance
                    };
                    break;

                case "CircleToggle":
                    CircleToggle.IsChecked = true;
                    _cmd = new DrawShapeCommand(this)
                    {
                        ShapeType = CircleShape.Instance
                    };
                    break;
                }
            }
        }
示例#3
0
 public void StoreAndExecute(ICanvasCommand command)
 {
     try{
         command.Execute();
         OnExecuteSuccess();
     }
     catch (Exception e)
     {
         OnExcuteException(e);
     }
 }
示例#4
0
 /// <summary>
 /// Invokes the command for pointer move
 /// </summary>
 /// <param name="cmd">Command</param>
 public async Task InvokePointerMovedAsync(ICanvasCommand cmd)
 {
     await cmd.PointerMovedExecuteAsync();
 }