protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); // if mouse button is not pressed we have no drag operation, ... if (e.LeftButton != MouseButtonState.Pressed) { this.rubberbandSelectionStartPoint = null; } // ... but if mouse button is pressed and start // point value is set we do have one if (this.rubberbandSelectionStartPoint.HasValue) { // create rubberband adorner AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { RubberbandAdorner adorner = new RubberbandAdorner(this, rubberbandSelectionStartPoint); if (adorner != null) { adornerLayer.Add(adorner); } } } e.Handled = true; }
/// <summary> /// Removes the rubber band (lasso) adorner. /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event arguments</param> private void RemoveRubberBandAdorner(object sender, EventArgs e) { // Get the adorner layer from the canvas AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(canvas); Debug.Assert(adornerLayer != null, nameof(adornerLayer) + " != null"); // Remove the rubber band adorner adornerLayer.Remove(_rubberbandAdorner); _rubberbandAdorner = null; }
protected override void OnMouseMove(MouseEventArgs e)//鼠标移动事件,绘制矩形虚线选择框 { base.OnMouseMove(e); if (e.LeftButton != MouseButtonState.Pressed) { _rubberbandSelectionStartPoint = null; } if (_rubberbandSelectionStartPoint.HasValue) { var adornerLayer = AdornerLayer.GetAdornerLayer(this);// create rubberband adorner if (adornerLayer != null && DesignMode == MODE.EDIT) { var adorner = new RubberbandAdorner(this, _rubberbandSelectionStartPoint); adornerLayer.Add(adorner); } } e.Handled = true; }
/// <summary> /// Create a new rubber band adorner along with its viewmodel in this canvas viewmodel. /// </summary> /// <param name="position"></param> /// <returns></returns> private RubberBandViewModel GetRubberBand(Point position) { this.DestroyRubberband(); RubberBandViewModel rbViewModel = this.CanvasViewModel.RubberBand; rbViewModel.IsVisible = false; rbViewModel.Position = new Point(position.X, position.Y); rbViewModel.EndPosition = new Point(position.X, position.Y); if (this.mRubberbandAdorner == null) { this.mRubberbandAdorner = new RubberbandAdorner(this, new Point(position.X, position.Y)); this.mRubberbandAdorner.Visibility = System.Windows.Visibility.Hidden; this.mRubberbandAdorner.Width = this.mRubberbandAdorner.Height = 0; // EndPosition binding with converter { var endPosBinding = new Binding("EndPosition"); endPosBinding.Source = rbViewModel; BindingOperations.SetBinding(this.mRubberbandAdorner, RubberbandAdorner.EndPointProperty, endPosBinding); } // Visibility binding with converter { var visiblityBinding = new Binding("IsVisible"); visiblityBinding.Source = rbViewModel; visiblityBinding.Converter = CanvasView.mBoolToVisConverter; BindingOperations.SetBinding(this.mRubberbandAdorner, RubberbandAdorner.VisibilityProperty, visiblityBinding); } AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { adornerLayer.Add(this.mRubberbandAdorner); } } rbViewModel.IsVisible = true; return(rbViewModel); }
/// <summary> /// Invoked when an unhandled <see cref="E:System.Windows.Input.Mouse.MouseMove"/> attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. /// </summary> /// <param name="e">The <see cref="T:System.Windows.Input.MouseEventArgs"/> that contains the event data.</param> protected override void OnMouseMove(MouseEventArgs e) { if (RubberbandStartPoint != null) { if (e.LeftButton == MouseButtonState.Pressed || e.RightButton == MouseButtonState.Pressed) { if ((e.GetPosition(this) - RubberbandStartPoint.Value).Length > 2) { var adornerLayer = AdornerLayer.GetAdornerLayer(partCanvas); if (adornerLayer != null) { var adorner = new RubberbandAdorner(this, RubberbandStartPoint.Value, Rubberband_Callback); adornerLayer.Add(adorner); RubberbandStartPoint = null; } } } } base.OnMouseMove(e); }
private void OnMouseMove(object sender, MouseEventArgs e) { // если клавиша мыши не нажата, то нет выделения if (e.LeftButton != MouseButtonState.Pressed) { this.RubberbandSelectionStartPoint = null; return; } // иначе делаем рамку if (this.RubberbandSelectionStartPoint.HasValue) { var adornerLayer = AdornerLayer.GetAdornerLayer(this.DesignerCanvas); if (adornerLayer != null) { var adorner = new RubberbandAdorner(this, TabViewModel); adornerLayer.Add(adorner); } } e.Handled = true; }
private void _drawingCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (_drawingCanvas.IsMouseCaptured) { _drawingCanvas.ReleaseMouseCapture(); } if (_dragging && !_isSelecting) { // remove rubberband adorner from adorner layer AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(_drawingCanvas); if (adornerLayer != null && _rubberbandAdorner != null) { adornerLayer.Remove(_rubberbandAdorner); _rubberbandAdorner = null; } e.Handled = true; } _dragging = false; RemoveResizeAdorner(); UpdateResizeAdorner(); }
/// <summary> /// Destroy rubber band adorner resources /// </summary> private void DestroyRubberband() { if (this.mRubberbandAdorner != null) { try { this.mRubberbandAdorner.Visibility = System.Windows.Visibility.Hidden; this.CanvasViewModel.ResetRubberBand(); AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { adornerLayer.Remove(this.mRubberbandAdorner); } } finally { this.mRubberbandAdorner = null; } } }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (e.LeftButton != MouseButtonState.Pressed) { this.dragStartPoint = null; } if (this.dragStartPoint.HasValue) { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { RubberbandAdorner adorner = new RubberbandAdorner(this, this.dragStartPoint); if (adorner != null) { adornerLayer.Add(adorner); } } e.Handled = true; } }
private void Selectionadorner_OnDestroy(RubberbandAdorner sender, SelectionEventArgs e) { sender.OnUpdateSelection -= Selectionadorner_OnUpdateSelection; sender.OnDetach -= Selectionadorner_OnDestroy; selectionStartPoint = null; }
private void Selectionadorner_OnUpdateSelection(RubberbandAdorner sender, SelectionEventArgs e) { Console.WriteLine(e.Range); }
private void Selectionadorner_OnAttach(RubberbandAdorner sender, SelectionEventArgs e) { }
private void _drawingCanvas_MouseMove(object sender, MouseEventArgs e) { OnMouseMove(e); var position = e.GetPosition(_drawingCanvas); if (_propEditorViewModel != null) { Coordinates = position; } if (IsDrawing) { return; } // if mouse button is not pressed we have no drag operation, ... if (e.LeftButton == MouseButtonState.Pressed) { switch (_dragging) { case true: if (_isSelecting) { double XDelta = position.X - _previousPosition.X; double YDelta = position.Y - _previousPosition.Y; //Console.Out.WriteLine("Start: {0},{1} - Current {2}, {3} - Delta {4}, {5}", _originMouseStartPoint.X, _originMouseStartPoint.Y, // position.X, position.Y, XDelta, YDelta); MoveSelectedItems(XDelta, YDelta); _previousPosition = position; RemoveResizeAdorner(); UpdateResizeAdorner(); } else { if (_rubberbandAdorner != null) { _rubberbandAdorner.EndPoint = position; } UpdateSelection(_originMouseStartPoint, position); e.Handled = true; } break; case false: if (!_isSelecting) { if (!_drawingCanvas.IsMouseCaptured) { _drawingCanvas.CaptureMouse(); } // create rubberband adorner AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { _rubberbandAdorner = new RubberbandAdorner(_drawingCanvas, _originMouseStartPoint); adornerLayer.Add(_rubberbandAdorner); } } e.Handled = true; _dragging = true; break; } } }
/// <summary> /// Invoked when an unhandled <see cref="E:System.Windows.Input.Mouse.MouseMove"/> attached event /// reaches an element in its route that is derived from this class. /// Implement this method to add class handling for this event. /// </summary> /// <param name="e">The <see cref="T:System.Windows.Input.MouseEventArgs"/> that contains the event data.</param> protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); // if mouse button is not pressed we have no drag operation, ... if (e.LeftButton != MouseButtonState.Pressed) { this.rubberbandSelectionStartPoint = null; } else if (this.rubberbandSelectionStartPoint.HasValue) // ... but if mouse button is pressed and start // point value is set we do have one { // create rubberband adorner AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { RubberbandAdorner adorner = new RubberbandAdorner(this, rubberbandSelectionStartPoint); if (adorner != null) { adornerLayer.Add(adorner); } } e.Handled = true; } }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if(SourceConnector != null) { if (e.LeftButton == MouseButtonState.Pressed) { Point currentPoint = e.GetPosition(this); _partialConnection.SinkConnectorInfo = new PartCreatedConnectionInfo(currentPoint); HitTesting(currentPoint); } } else { if (e.LeftButton != MouseButtonState.Pressed) _rubberbandSelectionStartPoint = null; if (_rubberbandSelectionStartPoint.HasValue) { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this); if (adornerLayer != null) { RubberbandAdorner adorner = new RubberbandAdorner(this, _rubberbandSelectionStartPoint); adornerLayer.Add(adorner); } } } e.Handled = true; }