diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/DrawingViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/DrawingViewModel.cs index b75d902..0cdcd76 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/DrawingViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/DrawingViewModel.cs @@ -53,8 +53,59 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels DesignerItemViewModelBase ellipse = new EllipseDrawingDesignerItemViewModel(DiagramViewModel, new List { new Point(238, 38), new Point(318, 118) }, true); DiagramViewModel.Add(ellipse); - TextDrawingDesignerItemViewModel text = new TextDrawingDesignerItemViewModel(DiagramViewModel, new Point(338, 38), "欢迎使用AIStudio画板", true); + DesignerItemViewModelBase text = new TextDrawingDesignerItemViewModel(DiagramViewModel, new Point(338, 38), "欢迎使用AIStudio画板", true); DiagramViewModel.Add(text); + + DesignerItemViewModelBase triangle = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableTriangle, new List { new Point(438, 38), new Point(518, 118) }, true); + DiagramViewModel.Add(triangle); + + DesignerItemViewModelBase rhombus = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableRhombus, new List { new Point(538, 38), new Point(618, 118) }, true); + DiagramViewModel.Add(rhombus); + + DesignerItemViewModelBase hexagon = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableHexagon, new List { new Point(638, 38), new Point(718, 118) }, true); + DiagramViewModel.Add(hexagon); + + DesignerItemViewModelBase pentagram = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasablePentagram, new List { new Point(738, 38), new Point(818, 118) }, true); + DiagramViewModel.Add(pentagram); + + DesignerItemViewModelBase starFour = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableStarFour, new List { new Point(38, 138), new Point(118, 218) }, true); + DiagramViewModel.Add(starFour); + + DesignerItemViewModelBase starThree = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableStarThree, new List { new Point(138, 138), new Point(218, 218) }, true); + DiagramViewModel.Add(starThree); + + DesignerItemViewModelBase chat = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableChat, new List { new Point(238, 138), new Point(318, 218) }, true); + DiagramViewModel.Add(chat); + + DesignerItemViewModelBase comment = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableComment, new List { new Point(338, 138), new Point(418, 218) }, true); + DiagramViewModel.Add(comment); + + DesignerItemViewModelBase cloud = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableCloud, new List { new Point(438, 138), new Point(518, 218) }, true); + DiagramViewModel.Add(cloud); + + DesignerItemViewModelBase arrowRight = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableArrowRight, new List { new Point(538, 138), new Point(618, 218) }, true); + DiagramViewModel.Add(arrowRight); + + DesignerItemViewModelBase arrowLeft = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableArrowLeft, new List { new Point(638, 138), new Point(718, 218) }, true); + DiagramViewModel.Add(arrowLeft); + + DesignerItemViewModelBase check = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableCheck, new List { new Point(738, 138), new Point(818, 218) }, true); + DiagramViewModel.Add(check); + + DesignerItemViewModelBase close = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableClose, new List { new Point(38, 238), new Point(118, 318) }, true); + DiagramViewModel.Add(close); + + DesignerItemViewModelBase heart = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableHeart, new List { new Point(138, 238), new Point(218, 318) }, true); + DiagramViewModel.Add(heart); + + DesignerItemViewModelBase directLine = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, new List { new Point(238, 238), new Point(298, 258), new Point(258, 298), new Point(318, 318) }, true); + DiagramViewModel.Add(directLine); + + DesignerItemViewModelBase polyline = new PolylineDrawingDesignerItemViewModel(DiagramViewModel, new List { new Point(338, 238), new Point(398, 258), new Point(358, 298), new Point(418, 318) }, true); + DiagramViewModel.Add(polyline); + + DesignerItemViewModelBase polygon = new PolygonDrawingDesignerItemViewModel(DiagramViewModel, new List { new Point(438, 238), new Point(498, 258), new Point(458, 298), new Point(518, 318) }, true); + DiagramViewModel.Add(polygon); } public override void Dispose() diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs index 64071e9..fa3d473 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs @@ -21,7 +21,7 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List points, bool erasable) : base(root, drawMode, points, erasable) + public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.DirectLine, points, erasable) { } @@ -36,9 +36,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void InitNew() + protected override void InitNewDrawing() { - if (Points?.Count > 1) + if (IsFinish) { var geometry = new PathGeometry(); var figure = new PathFigure { StartPoint = Points[0] }; @@ -50,12 +50,11 @@ namespace AIStudio.Wpf.DiagramDesigner LineSegment arc = new LineSegment(point, true); geometry.Figures[0].Segments.Add(arc); - } - + } + Geometry = geometry; - IsFinish = true; } - base.InitNew(); + base.InitNewDrawing(); } public override bool OnMouseMove(IInputElement sender, MouseEventArgs e) @@ -152,7 +151,7 @@ namespace AIStudio.Wpf.DiagramDesigner public override bool OnMouseUp(IInputElement sender, MouseButtonEventArgs e) { - if (e.ChangedButton == MouseButton.Left && Keyboard.IsKeyDown(Key.LeftShift) == false)//按着LeftShift自动封闭曲线 + if (e != null && e.ChangedButton == MouseButton.Left && Keyboard.IsKeyDown(Key.LeftShift) == false)//按着LeftShift自动封闭曲线 { return false; } @@ -161,7 +160,7 @@ namespace AIStudio.Wpf.DiagramDesigner if (Geometry is PathGeometry geometry) { var preLine = geometry.Figures[0].Segments.LastOrDefault(); - if (preLine != _lastLine) + if (preLine != _lastLine && _lastLine != null) { geometry.Figures[0].Segments.Remove(preLine); } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs index 65cb276..bbe5f0d 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs @@ -17,7 +17,7 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List points, bool erasable) : base(root, drawMode, points, erasable) + public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasablePolygon, points, erasable) { } @@ -32,9 +32,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void InitNew() - { - if (Points?.Count > 1) + protected override void InitNewDrawing() + { + if (IsFinish) { var geometry = new PathGeometry(); var figure = new PathFigure { StartPoint = Points[0] }; @@ -50,11 +50,11 @@ namespace AIStudio.Wpf.DiagramDesigner } Geometry = geometry; - IsFinish = true; } - base.InitNew(); + base.InitNewDrawing(); } + public override bool OnMouseMove(IInputElement sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs index 8849786..598520b 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs @@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List points, bool erasable) : base(root, drawMode, points, erasable) + public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasablePolyline, points, erasable) { } @@ -37,9 +37,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void InitNew() - { - if (Points?.Count > 1) + protected override void InitNewDrawing() + { + if (IsFinish) { var geometry = new PathGeometry(); var figure = new PathFigure { StartPoint = Points[0] }; @@ -54,9 +54,8 @@ namespace AIStudio.Wpf.DiagramDesigner } Geometry = geometry; - IsFinish= true; } - base.InitNew(); + base.InitNewDrawing(); } public override bool OnMouseMove(IInputElement sender, MouseEventArgs e) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/SharpDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/SharpDrawingDesignerItemViewModel.cs index 5431431..e697e66 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/SharpDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/SharpDrawingDesignerItemViewModel.cs @@ -36,9 +36,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void InitNew() + protected override void InitNewDrawing() { - if (Points?.Count > 1) + if (IsFinish) { var path = GetPath(); PathGeometry pathGeometry = PathGeometry.CreateFromGeometry(Geometry.Parse(path)); @@ -49,11 +49,11 @@ namespace AIStudio.Wpf.DiagramDesigner transformGroup.Children.Add(new ScaleTransform(radiox, radioy)); pathGeometry.Transform = transformGroup; Geometry = pathGeometry; - IsFinish = true; } - base.InitNew(); + base.InitNewDrawing(); } + public override bool OnMouseMove(IInputElement sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed)