Exemple #1
0
        public ImageEditorWindow()
        {
            InitializeComponent();

            if (DataContext is ImageEditorViewModel vm)
            {
                vm.ObserveProperty(M => M.TransformedBitmap)
                .Subscribe(M => UpdateInkCanvas());

                vm.InkCanvas = InkCanvas;
                vm.Window    = this;

                InkCanvas.Strokes.StrokesChanged += (S, E) =>
                {
                    var item = new StrokeHistory();

                    item.Added.AddRange(E.Added);
                    item.Removed.AddRange(E.Removed);

                    vm.AddInkHistory(item);
                };

                void SelectionMovingOrResizing(object Sender, InkCanvasSelectionEditingEventArgs Args)
                {
                    vm.AddSelectHistory(new SelectHistory
                    {
                        NewRect   = Args.NewRectangle,
                        OldRect   = Args.OldRectangle,
                        Selection = InkCanvas.GetSelectedStrokes()
                    });
                }

                InkCanvas.SelectionMoving   += SelectionMovingOrResizing;
                InkCanvas.SelectionResizing += SelectionMovingOrResizing;

                var inkCanvasVm = vm.InkCanvasViewModel;

                inkCanvasVm
                .SelectedColor
                .Subscribe(M => InkCanvas.DefaultDrawingAttributes.Color = M);

                inkCanvasVm
                .BrushSize
                .Subscribe(M => InkCanvas.DefaultDrawingAttributes.Height = InkCanvas.DefaultDrawingAttributes.Width = M);

                inkCanvasVm
                .SelectedTool
                .Subscribe(M => InkCanvas.SetInkTool(M));
            }

            Image.SizeChanged += (S, E) => UpdateInkCanvas();

            InkCanvas.DefaultDrawingAttributes.FitToCurve = true;
        }
Exemple #2
0
        public ImageEditorWindow()
        {
            InitializeComponent();

            if (DataContext is ImageEditorViewModel vm)
            {
                vm.PropertyChanged += (S, E) =>
                {
                    if (E.PropertyName == nameof(vm.TransformedBitmap))
                    {
                        UpdateInkCanvas();
                    }
                };

                vm.InkCanvas = InkCanvas;

                InkCanvas.Strokes.StrokesChanged += (S, E) =>
                {
                    var item = new StrokeHistory();

                    item.Added.AddRange(E.Added);
                    item.Removed.AddRange(E.Removed);

                    vm.AddInkHistory(item);
                };

                void SelectionMovingOrResizing(object Sender, InkCanvasSelectionEditingEventArgs Args)
                {
                    vm.AddSelectHistory(new SelectHistory
                    {
                        NewRect   = Args.NewRectangle,
                        OldRect   = Args.OldRectangle,
                        Selection = InkCanvas.GetSelectedStrokes()
                    });
                }

                InkCanvas.SelectionMoving   += SelectionMovingOrResizing;
                InkCanvas.SelectionResizing += SelectionMovingOrResizing;

                vm.Window = this;
            }

            Image.SizeChanged += (S, E) => UpdateInkCanvas();

            ModesBox.SelectedIndex = 0;

            _settings = ServiceProvider.Get <Settings>().ImageEditor;

            ColorPicker.SelectedColor = _settings.BrushColor.ToWpfColor();
            SizeBox.Value             = _settings.BrushSize;

            InkCanvas.DefaultDrawingAttributes.FitToCurve = true;
        }
        public ImageEditorWindow()
        {
            InitializeComponent();

            if (DataContext is ImageEditorViewModel vm)
            {
                vm.PropertyChanged += (S, E) =>
                {
                    if (E.PropertyName == nameof(vm.TransformedBitmap))
                    {
                        UpdateInkCanvas();
                    }
                };

                vm.InkCanvas = InkCanvas;

                InkCanvas.Strokes.StrokesChanged += (S, E) =>
                {
                    var item = new StrokeHistory();

                    item.Added.AddRange(E.Added);
                    item.Removed.AddRange(E.Removed);

                    vm.AddInkHistory(item);
                };

                vm.Window = this;
            }

            Image.SizeChanged += (S, E) => UpdateInkCanvas();

            ColorPicker.SelectedColor = Color.FromRgb(27, 27, 27);
            ModesBox.SelectedIndex    = 0;
            SizeBox.Value             = 10;

            InkCanvas.DefaultDrawingAttributes.FitToCurve = true;
        }