Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        /// <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;
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 /// <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);
 }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        /// <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;
                }
            }
        }
Esempio n. 9
0
        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;
            }
        }
Esempio n. 10
0
 private void Selectionadorner_OnDestroy(RubberbandAdorner sender, SelectionEventArgs e)
 {
     sender.OnUpdateSelection -= Selectionadorner_OnUpdateSelection;
     sender.OnDetach          -= Selectionadorner_OnDestroy;
     selectionStartPoint       = null;
 }
Esempio n. 11
0
 private void Selectionadorner_OnUpdateSelection(RubberbandAdorner sender, SelectionEventArgs e)
 {
     Console.WriteLine(e.Range);
 }
Esempio n. 12
0
 private void Selectionadorner_OnAttach(RubberbandAdorner sender, SelectionEventArgs e)
 {
 }
Esempio n. 13
0
        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;
                }
            }
        }
Esempio n. 14
0
        /// <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;
            }
        }
Esempio n. 15
0
        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;
        }