Esempio n. 1
0
        private void DrawLineCanvasGrid_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            CanvasGrid.ReleaseMouseCapture();
            CanvasGrid.MouseMove -= DrawLineCanvasGrid_PreviewMouseMove;
            CanvasGrid.PreviewMouseRightButtonDown -= DrawLineCanvasGrid_PreviewMouseRightButtonDown;
            CanvasGrid.PreviewMouseLeftButtonDown  -= DrawLineCanvasGrid_PreviewMouseLeftButtonDown;
            CanvasGrid.PreviewMouseLeftButtonDown  += CanvasGrid_PreviewMouseLeftButtonDown;
            MoveRadioButton.IsChecked = true;

            TestPolyline.Points.RemoveAt(TestPolyline.Points.Count - 1);
            foreach (Point point in TestPolyline.Points)
            {
                _polylinePositionings.Add(TranformPositioning(point) - _offsetPositioning);
            }

            var gridIndexes = GridHelper.GetPolylineGrindIndex(_polylinePositionings).OrderBy(p => p.Index1).ThenBy(p => p.Index2).ThenBy(p => p.Index3).ThenBy(p => p.Index4);

            foreach (var gridIndex in gridIndexes)
            {
                _gridIndexes.Add(gridIndex);
            }

            DrawGrid();

            _isDrawing = false;
        }
Esempio n. 2
0
        /// <summary>
        /// 释放拖放
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            var data = Helper.DragDrop.GetData();

            if (data is System.Windows.Controls.Primitives.Popup)
            {
                var pop = data as System.Windows.Controls.Primitives.Popup;

                var unit = pop.Child as Elements.Unit;
                if (unit != null)
                {
                    pop.Child     = null;
                    unit.Position = CanvasGrid.CheckPosition(e.GetPosition(CanvasGrid.BackCanvas));
                    var el = CanvasGrid.GetElement(unit.Position);
                    //必须是当前位置无元素方可放置
                    if (!(el is Elements.Unit))
                    {
                        CanvasGrid.AddElement(unit);
                        BindMenu();//绑定菜单
                    }
                }

                pop.IsOpen = false;
                Helper.DragDrop.Clear();
                StopDrag();
            }
        }
Esempio n. 3
0
        private void DrawPoint()
        {
            CanvasGrid.ReleaseMouseCapture();
            _ellipsePositioning = TranformPositioning(_originPoint) - _offsetPositioning;
            TestEllipse.Opacity = 1d;
            TestEllipse.Width   = TestEllipse.Height = _level * 4d;
            Canvas.SetLeft(TestEllipse, _originPoint.X - _level * 2d);
            Canvas.SetTop(TestEllipse, _originPoint.Y - _level * 2d);
            MoveRadioButton.IsChecked = true;
            _gridIndexes.Add(GridHelper.GetPointGridIndex(_ellipsePositioning));

            DrawGrid();
        }
Esempio n. 4
0
        private void CanvasGrid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            CanvasGrid.CaptureMouse();

            _originPoint = e.GetPosition(RootCanvas);

            switch (_operation)
            {
            case 0:
                CanvasGrid.MouseMove -= MoveCanvasGrid_PreviewMouseMove;
                CanvasGrid.MouseMove += MoveCanvasGrid_PreviewMouseMove;
                CanvasGrid.PreviewMouseLeftButtonUp -= MoveCanvasGrid_PreviewMouseLeftButtonUp;
                CanvasGrid.PreviewMouseLeftButtonUp += MoveCanvasGrid_PreviewMouseLeftButtonUp;
                break;

            case 1:
                ResetShape();
                DrawPoint();
                break;

            case 2:
                _isDrawing            = true;
                CanvasGrid.MouseMove -= DrawLineCanvasGrid_PreviewMouseMove;
                CanvasGrid.MouseMove += DrawLineCanvasGrid_PreviewMouseMove;
                CanvasGrid.PreviewMouseLeftButtonDown  -= CanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseLeftButtonDown  -= DrawLineCanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseLeftButtonDown  += DrawLineCanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseRightButtonDown -= DrawLineCanvasGrid_PreviewMouseRightButtonDown;
                CanvasGrid.PreviewMouseRightButtonDown += DrawLineCanvasGrid_PreviewMouseRightButtonDown;
                ResetShape();
                TestPolyline.Points.Add(_originPoint);
                TestPolyline.Points.Add(_originPoint);
                break;

            case 3:
                _isDrawing            = true;
                CanvasGrid.MouseMove -= DrawPlaneCanvasGrid_PreviewMouseMove;
                CanvasGrid.MouseMove += DrawPlaneCanvasGrid_PreviewMouseMove;
                CanvasGrid.PreviewMouseLeftButtonDown  -= CanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseLeftButtonDown  -= DrawPlaneCanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseLeftButtonDown  += DrawPlaneCanvasGrid_PreviewMouseLeftButtonDown;
                CanvasGrid.PreviewMouseRightButtonDown -= DrawPlaneCanvasGrid_PreviewMouseRightButtonDown;
                CanvasGrid.PreviewMouseRightButtonDown += DrawPlaneCanvasGrid_PreviewMouseRightButtonDown;
                ResetShape();
                TestPolygon.Points.Add(_originPoint);
                TestPolygon.Points.Add(_originPoint);
                break;
            }
        }
Esempio n. 5
0
        private void ZoomOut(object sender, RoutedEventArgs e)
        {
            ScaleTransform scale = Canvas.LayoutTransform as ScaleTransform;

            if (scale == null)
            {
                Canvas.LayoutTransform = scale = new ScaleTransform(1, 1);
            }
            if (resizer != null)
            {
                Rect bounds = GetUnscaledBounds(resizer.Bounds);
                scale.ScaleX = scale.ScaleY = (scale.ScaleY / 1.1);
                CanvasGrid.UpdateLayout();
                MoveResizer(selected, bounds);
            }
        }
Esempio n. 6
0
        private void MoveCanvasGrid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            CanvasGrid.ReleaseMouseCapture();
            CanvasGrid.MouseMove -= MoveCanvasGrid_PreviewMouseMove;
            CanvasGrid.PreviewMouseLeftButtonUp -= MoveCanvasGrid_PreviewMouseLeftButtonUp;

            var vector = e.GetPosition(RootCanvas) - _originPoint;

            _offsetPositioning += TranformPositioning(vector);

            DrawGrid();

            GridCanvas.ClearValue(Canvas.LeftProperty);
            GridCanvas.ClearValue(Canvas.TopProperty);
            ShapCanvas.ClearValue(Canvas.LeftProperty);
            ShapCanvas.ClearValue(Canvas.TopProperty);
        }
Esempio n. 7
0
        private Rect GetUnscaledBounds(Rect scaledBounds)
        {
            Rect bounds = CanvasGrid.TransformToDescendant(selected.Content).TransformBounds(scaledBounds);

            if (bounds.Left < 0)
            {
                bounds.Width += bounds.Left;
                bounds.X      = 0;
            }
            if (bounds.Top < 0)
            {
                bounds.Height += bounds.Top;
                bounds.Y       = 0;
            }

            return(bounds);
        }
Esempio n. 8
0
        /// <summary>
        /// 拖放完成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void thumb_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
        {
            if (CanvasGrid == null)
            {
                return;
            }

            var p = new Point();

            p.X = Canvas.GetLeft(this);
            if (p.X == double.NaN)
            {
                p.X = 0;
            }
            p.Y = Canvas.GetTop(this);
            if (p.Y == double.NaN)
            {
                p.Y = 0;
            }

            CanvasGrid.CheckCanvasGrid();

            //var p = new Point(firstClickPosition.X + e.HorizontalChange, firstClickPosition.Y + e.VerticalChange);
            var newp = CanvasGrid.CheckPosition(p);

            //如果当前位置已有元素
            //则放弃落地
            var el = CanvasGrid.GetElement(newp);

            if (el == null && newp.X != 0)
            {
                this.Position = newp;
            }

            this.Opacity = 1;

            //重新定位。
            this.ResetPosition();
        }