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; }
/// <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(); } }
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(); }
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; } }
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); } }
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); }
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); }
/// <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(); }