protected override void StartDragCore(Point position) { _fromPt = position; _adorner = new SelectAdorner(Target) { Rectangle = new Rect(position, position) }; AdornerLayer layer = AdornerLayer.GetAdornerLayer(Target); layer.Add(_adorner); }
private void CanvasMouseDown(object sender, MouseButtonEventArgs e) { if (inkCanvas.EditingMode == InkCanvasEditingMode.Select && inkCanvas.GetSelectedStrokes().Count > 0) { Rect rect = inkCanvas.GetSelectionBounds(); //bound of strokes rect.Inflate(14, 14); //bound of resize thumb if (!rect.Contains(e.GetPosition(inkCanvas))) { inkCanvas.EditingMode = InkCanvasEditingMode.None; } else { return; } } if (curColorPickerMode == ColorPickerModeEnum.True) { curColorPickerMode = ColorPickerModeEnum.False; Mouse.OverrideCursor = Cursors.Arrow; POINT p; GetCursorPos(out p); IntPtr hdc = GetDC(IntPtr.Zero); int c = GetPixel(hdc, p.X, p.Y); byte r = (byte)(c & 0xFF); byte g = (byte)((c & 0xFF00) >> 8); byte b = (byte)((c & 0xFF0000) >> 16); // set color } switch (curOperationMode) { case ModeEnum.Draw: if (curDraw != null) { curDraw.OnMouseDown(inkCanvas, e); } break; case ModeEnum.Select: var selectionStartPoint = new Point?(e.GetPosition(inkCanvas)); AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(inkCanvas); if (adornerLayer != null) { SelectAdorner adorner = new SelectAdorner(inkCanvas, selectionStartPoint); if (adorner != null) { adornerLayer.Add(adorner); } } break; } }
private void DrawSelect_MouseUp() { if (SelectRectangle != null && currentSelectedImage == null) { if (SelectRectangle.Height < 2 || SelectRectangle.Width < 2) { paintCanvas.Children.Remove(SelectRectangle); SelectRectangle = null; } else { paintCanvas.Children.Remove(SelectRectangle); currentSelectedImage = CanvasUltilities.Crop(paintCanvas, Canvas.GetLeft(SelectRectangle), Canvas.GetTop(SelectRectangle), SelectRectangle.Width, SelectRectangle.Height); //Add replace rectangle to Hide view behind cropped region Rectangle replace = new Rectangle() { Width = SelectRectangle.Width, Height = SelectRectangle.Height, Stroke = Brushes.Transparent, StrokeThickness = 0, Fill = Brushes.White }; Canvas.SetLeft(replace, Canvas.GetLeft(SelectRectangle)); Canvas.SetTop(replace, Canvas.GetTop(SelectRectangle)); paintCanvas.Children.Add(replace); currentSelectedImage.Stretch = Stretch.Fill; currentSelectedImage.StretchDirection = StretchDirection.Both; Canvas.SetLeft(currentSelectedImage, Canvas.GetLeft(SelectRectangle)); Canvas.SetTop(currentSelectedImage, Canvas.GetTop(SelectRectangle)); currentSelectedImage.Width = currentSelectedImage.Source.Width; currentSelectedImage.Height = currentSelectedImage.Source.Height; paintCanvas.Children.Add(currentSelectedImage); Adorner image_adorner = new SelectAdorner(currentSelectedImage); adlayer.Add(image_adorner); } } }