diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs index 4359f48..e31f979 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs @@ -409,6 +409,8 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels viewModel.Items.Add(connectionVM); } + viewModel.Thumbnail = diagramItem.Thumbnail; + viewModels.Add(viewModel); } DiagramViewModels = new ObservableCollection(viewModels); @@ -450,6 +452,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); + diagramItem.Thumbnail = viewModel.Thumbnail; diagramDocument.DiagramItems.Add(diagramItem); } @@ -502,6 +505,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); + diagramItem.Thumbnail = viewModel.Thumbnail; viewModel = new DiagramViewModel(diagramItem); viewModel.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"); @@ -531,6 +535,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels connectionVM.Id = Guid.NewGuid(); viewModel.Items.Add(connectionVM); } + viewModel.Thumbnail = diagramItem.Thumbnail; DiagramViewModels.Add(viewModel); DiagramViewModel = viewModel; diff --git a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml index 80936f9..a9d5ee9 100644 --- a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml @@ -915,8 +915,7 @@ --> - - + @@ -1526,6 +1525,63 @@ + + + + + + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner/Adorners/DrawingRubberbandAdorner.cs b/AIStudio.Wpf.DiagramDesigner/Adorners/DrawingRubberbandAdorner.cs index 890e967..fdc1bbb 100644 --- a/AIStudio.Wpf.DiagramDesigner/Adorners/DrawingRubberbandAdorner.cs +++ b/AIStudio.Wpf.DiagramDesigner/Adorners/DrawingRubberbandAdorner.cs @@ -65,29 +65,36 @@ namespace AIStudio.Wpf.DiagramDesigner _rubberbandBrush = null; _rubberbandPen = new Pen(new SolidColorBrush(Colors.Red) { Opacity = 0.5 }, _drawingDesignerItem.ColorViewModel.LineWidth); } - else if (DrawMode >= DrawMode.Line && DrawMode <= DrawMode.DirectLine) + else if (DrawMode == DrawMode.EraserPreview) { - if (DrawMode == DrawMode.Line) + _drawingDesignerItem = new EraserPreviewDrawingDesignerItemViewModel(_viewModel, dragStartPoint); + + _rubberbandBrush = null; + _rubberbandPen = new Pen(new SolidColorBrush(Colors.Red) { Opacity = 0.5 }, _drawingDesignerItem.ColorViewModel.LineWidth); + } + else if (DrawMode >= DrawMode.ErasableLine && DrawMode <= DrawMode.ErasableDirectLine) + { + if (DrawMode == DrawMode.ErasableLine) { _drawingDesignerItem = new LineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } - else if (DrawMode == DrawMode.Rectangle) + else if (DrawMode == DrawMode.ErasableRectangle) { _drawingDesignerItem = new RectangleDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } - else if (DrawMode == DrawMode.Ellipse) + else if (DrawMode == DrawMode.ErasableEllipse) { _drawingDesignerItem = new EllipseDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } - else if (DrawMode == DrawMode.Polyline) + else if (DrawMode == DrawMode.ErasablePolyline) { _drawingDesignerItem = new PolylineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } - else if (DrawMode == DrawMode.Polygon) + else if (DrawMode == DrawMode.ErasablePolygon) { _drawingDesignerItem = new PolygonDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } - else if (DrawMode == DrawMode.DirectLine) + else if (DrawMode == DrawMode.ErasableDirectLine) { _drawingDesignerItem = new DirectLineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, true); } @@ -96,29 +103,29 @@ namespace AIStudio.Wpf.DiagramDesigner _rubberbandPen = new Pen(ColorObject.ToBrush(_drawingDesignerItem.ColorViewModel.LineColor), _drawingDesignerItem.ColorViewModel.LineWidth); _rubberbandPen.DashStyle = new DashStyle(StrokeDashArray.Dash[(int)_drawingDesignerItem.ColorViewModel.LineDashStyle], 1); } - else if (DrawMode >= DrawMode.FillableLine && DrawMode <= DrawMode.FillableDirectLine) + else if (DrawMode >= DrawMode.Line && DrawMode <= DrawMode.DirectLine) { - if (DrawMode == DrawMode.FillableLine) + if (DrawMode == DrawMode.Line) { _drawingDesignerItem = new LineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } - else if (DrawMode == DrawMode.FillableRectangle) + else if (DrawMode == DrawMode.Rectangle) { _drawingDesignerItem = new RectangleDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } - else if (DrawMode == DrawMode.FillableEllipse) + else if (DrawMode == DrawMode.Ellipse) { _drawingDesignerItem = new EllipseDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } - else if (DrawMode == DrawMode.FillablePolyline) + else if (DrawMode == DrawMode.Polyline) { _drawingDesignerItem = new PolylineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } - else if (DrawMode == DrawMode.FillablePolygon) + else if (DrawMode == DrawMode.Polygon) { _drawingDesignerItem = new PolygonDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } - else if (DrawMode == DrawMode.FillableDirectLine) + else if (DrawMode == DrawMode.DirectLine) { _drawingDesignerItem = new DirectLineDrawingDesignerItemViewModel(_viewModel, dragStartPoint, false); } diff --git a/AIStudio.Wpf.DiagramDesigner/Enums/DrawMode.cs b/AIStudio.Wpf.DiagramDesigner/Enums/DrawMode.cs index 564f26c..32af512 100644 --- a/AIStudio.Wpf.DiagramDesigner/Enums/DrawMode.cs +++ b/AIStudio.Wpf.DiagramDesigner/Enums/DrawMode.cs @@ -13,19 +13,23 @@ namespace AIStudio.Wpf.DiagramDesigner ConnectingLineBoundary = 13, //101-110为可部分擦除的形状 Eraser = 100, - Line = 101, - Rectangle = 102, - Ellipse = 103, - Polyline = 104, - Polygon = 105, - DirectLine = 106, - //不可部分擦除 - FillableLine = 111, - FillableRectangle = 112, - FillableEllipse = 113, - FillablePolyline = 114, - FillablePolygon = 115, - FillableDirectLine = 116, + EraserPreview = 101, + ErasableLine = 110, + ErasableRectangle = 111, + ErasableEllipse = 112, + ErasablePolyline = 113, + ErasablePolygon = 114, + ErasableDirectLine = 115, + Text = 200, + Line = 210, + Rectangle = 211, + Ellipse = 212, + Polyline = 213, + Polygon = 214, + DirectLine = 215, + + + } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs index c7d673a..466937b 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs @@ -167,6 +167,10 @@ namespace AIStudio.Wpf.DiagramDesigner [XmlArray] public List Connections { get; set; } = new List(); - + [XmlAttribute] + public string Thumbnail + { + get; set; + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DrawModeViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DrawModeViewModel.cs index 81d48cd..dd81b7a 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DrawModeViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DrawModeViewModel.cs @@ -146,7 +146,7 @@ namespace AIStudio.Wpf.DiagramDesigner } } - private DrawMode _shapeDrawMode = DrawMode.Rectangle; + private DrawMode _shapeDrawMode = DrawMode.ErasableRectangle; public DrawMode DrawingDrawMode { get diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index d045eff..24555ca 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -9,6 +9,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; +using System.Xml.Serialization; using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Helpers; using AIStudio.Wpf.DiagramDesigner.Models; @@ -669,6 +670,10 @@ namespace AIStudio.Wpf.DiagramDesigner return menuOptions; } } + public string Thumbnail + { + get; set; + } public bool ShowMenuOptions { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs index 64dcf2f..9ee1e7f 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DirectLineDrawingDesignerItemViewModel.cs @@ -20,11 +20,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.DirectLine, startPoint, erasable) + public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableDirectLine, startPoint, erasable) { } - public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.DirectLine, points, erasable) + public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableDirectLine, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs index f05f9fa..9020688 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs @@ -19,11 +19,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public EllipseDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.Rectangle, startPoint, erasable) + public EllipseDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableRectangle, startPoint, erasable) { } - public EllipseDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.Rectangle, points, erasable) + public EllipseDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableRectangle, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs index 5681cde..49a0b33 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs @@ -20,11 +20,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public LineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.Line, startPoint, erasable) + public LineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableLine, startPoint, erasable) { } - public LineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.Line, points, erasable) + public LineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableLine, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs index 2d0da84..6e4cc0f 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolygonDrawingDesignerItemViewModel.cs @@ -16,11 +16,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.Line, startPoint, erasable) + public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableLine, startPoint, erasable) { } - public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.Line, points, erasable) + public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableLine, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs index ebdfcfc..cd42367 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/PolylineDrawingDesignerItemViewModel.cs @@ -21,11 +21,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.Line, startPoint, erasable) + public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableLine, startPoint, erasable) { } - public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.Line, points, erasable) + public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableLine, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs index b4e8a07..f7b5c07 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs @@ -19,11 +19,11 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public RectangleDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.Rectangle, startPoint, erasable) + public RectangleDrawingDesignerItemViewModel(IDiagramViewModel root, Point startPoint, bool erasable) : base(root, DrawMode.ErasableRectangle, startPoint, erasable) { } - public RectangleDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.Rectangle, points, erasable) + public RectangleDrawingDesignerItemViewModel(IDiagramViewModel root, List points, bool erasable) : base(root, DrawMode.ErasableRectangle, points, erasable) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs index e7e3cd7..50060f0 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs @@ -5,6 +5,7 @@ using System.ComponentModel; using System.Windows; using System.Windows.Input; using System.Windows.Media; +using System.Xml.Serialization; namespace AIStudio.Wpf.DiagramDesigner { @@ -347,6 +348,10 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } + string Thumbnail + { + get; set; + } #region 如果这个赋值了,优先用这个的 IDrawModeViewModel DrawModeViewModel {