예제 #1
0
        private void DeleteSelectedComponents_Click(object sender, RoutedEventArgs e)
        {
            var elements = InkLayer.GetSelectedElements();
            var strokes  = InkLayer.GetSelectedStrokes();

            if (elements.Count > 0 || strokes.Count > 0)
            {
                DeleteSelectedElements(elements, strokes);
            }
            e.Handled = true;
        }
예제 #2
0
        public void RemoveLayer(InkLayer layer)
        {
            if (layer == null)
            {
                return;
            }
            var n = _layers.IndexOf(layer);

            _layers.Remove(layer);
            layer.Image.Dispose();
            ActiveLayer = n < _layers.Count && n >= 0 ? _layers[n] : _layers.LastOrDefault();
            //_canvas.Invalidate();
            Invalidate();
        }
예제 #3
0
        private void InkLayer_SelectionChanged(object sender, EventArgs e)
        {
            var layer = (InkLayer.DataContext as ViewModels.Controls.Layer);

            InkLayer.UpdateLayout();
            var bounds = InkLayer.GetSelectionBounds();

            if (bounds != null && !bounds.IsEmpty && bounds.Width > 0 && bounds.Height > 0)
            {
                var topRightCorner = new Point(bounds.X + bounds.Width, bounds.Y);
                DeleteSelectedComponents.SetValue(Canvas.LeftProperty, topRightCorner.X - 2);
                DeleteSelectedComponents.SetValue(Canvas.TopProperty, topRightCorner.Y - 23);
                DeleteSelectedComponents.Visibility = Visibility.Visible;
            }
            else
            {
                DeleteSelectedComponents.Visibility = Visibility.Collapsed;
            }
        }
예제 #4
0
        public InkLayer AddLayer(string name)
        {
            var layer = new InkLayer
            {
                Image     = CanvasRenderTargetExtension.CreateEmpty(_canvas, new Size(CanvasWidth, CanvasHeight)),
                Name      = name,
                IsVisible = true,
                Opacity   = 100
            };

            layer.PropertyChanged += Layer_PropertyChanged;
            using (var ds = layer.Image.CreateDrawingSession())
            {
                ds.Clear();
            }
            _layers.Insert(0, layer);
            ActiveLayer = layer;
            return(layer);
        }
예제 #5
0
        private void App_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var layer    = (InkLayer.DataContext as ViewModels.Controls.Layer);
            var elements = InkLayer.GetSelectedElements();
            var strokes  = InkLayer.GetSelectedStrokes();

            if (elements.Count > 0 || strokes.Count > 0)
            {
                if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) &&
                    (e.Key == Key.X || e.Key == Key.C || e.Key == Key.V))
                {
                    e.Handled = true;
                }
                else if (e.Key == Key.Delete && layer.IsCurrentLayer)
                {
                    DeleteSelectedElements(elements, strokes);
                    e.Handled = true;
                }
            }
        }
예제 #6
0
        public async Task <bool> ImportPicture(IRandomAccessStream stream)
        {
            var layer = new InkLayer
            {
                Image     = CanvasRenderTargetExtension.CreateEmpty(_canvas, new Size(CanvasWidth, CanvasHeight)),
                Name      = "Imported",
                IsVisible = true,
                Opacity   = 100
            };

            layer.PropertyChanged += Layer_PropertyChanged;
            using (var bitmap = await CanvasBitmap.LoadAsync(_canvas.SwapChain, stream))
                using (var ds = layer.Image.CreateDrawingSession())
                {
                    ds.Clear();
                    ds.DrawImage(bitmap);
                }
            _layers.Add(layer);
            //_canvas.Invalidate();
            Invalidate();
            return(true);
        }
예제 #7
0
 protected virtual void Enter(bool animated)
 {
     RippleState = MDCInkRippleState.kInkRippleSpreading;
     InkLayer.AddSublayer(this);
     _animationCleared = false;
 }
예제 #8
0
 public async Task<bool> ImportPicture(IRandomAccessStream stream)
 {
     var layer = new InkLayer
     {
         Image = CanvasRenderTargetExtension.CreateEmpty(_canvas, new Size(CanvasWidth, CanvasHeight)),
         Name = "Imported",
         IsVisible = true,
         Opacity = 100
     };
     layer.PropertyChanged += Layer_PropertyChanged;
     using (var bitmap = await CanvasBitmap.LoadAsync(_canvas, stream))
     using (var ds = layer.Image.CreateDrawingSession())
     {
         ds.Clear();
         ds.DrawImage(bitmap);
     }
     _layers.Add(layer);
     _canvas.Invalidate();
     return true;
 }
예제 #9
0
 public void RemoveLayer(InkLayer layer)
 {
     if (layer == null) return;
     var n = _layers.IndexOf(layer);
     _layers.Remove(layer);
     layer.Image.Dispose();
     ActiveLayer = n < _layers.Count && n >= 0 ? _layers[n] : _layers.LastOrDefault();
     _canvas.Invalidate();
 }
예제 #10
0
 public InkLayer AddLayer(string name)
 {
     var layer = new InkLayer
     {
         Image = CanvasRenderTargetExtension.CreateEmpty(_canvas, new Size(CanvasWidth, CanvasHeight)),
         Name = name,
         IsVisible = true,
         Opacity = 100
     };
     layer.PropertyChanged += Layer_PropertyChanged;
     using (var ds = layer.Image.CreateDrawingSession())
     {
         ds.Clear();
     }
     _layers.Insert(0, layer);
     ActiveLayer = layer;
     return layer;
 }