2023-05-15 22:57:13 +08:00
|
|
|
|
using System.Collections.Generic;
|
2023-05-14 23:26:08 +08:00
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Windows;
|
|
|
|
|
|
using AIStudio.Wpf.DiagramApp.Models;
|
|
|
|
|
|
using AIStudio.Wpf.DiagramDesigner;
|
|
|
|
|
|
|
|
|
|
|
|
namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|
|
|
|
|
{
|
|
|
|
|
|
public class DrawingViewModel : PageViewModel
|
|
|
|
|
|
{
|
|
|
|
|
|
public DrawingViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
public DrawingViewModel(string filename, DiagramDocument diagramDocument) : base(filename, diagramDocument)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var vm in DiagramViewModels)
|
|
|
|
|
|
{
|
|
|
|
|
|
vm.Init(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void InitDiagramViewModel()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.InitDiagramViewModel();
|
|
|
|
|
|
|
|
|
|
|
|
DiagramViewModel.DiagramOption.LayoutOption.GridCellSize = new Size(100, 100);
|
2023-05-20 17:22:12 +08:00
|
|
|
|
DiagramViewModel.DiagramOption.LayoutOption.ShowGrid = true;
|
2023-05-14 23:26:08 +08:00
|
|
|
|
DiagramViewModel.DiagramOption.LayoutOption.AllowDrop = true;
|
2023-05-16 22:53:11 +08:00
|
|
|
|
_service.DrawModeViewModel.DrawingDrawModeSelected = true;
|
|
|
|
|
|
_service.DrawModeViewModel.DrawingDrawMode = DrawMode.Select;
|
2023-05-14 23:26:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override void Init(bool initNew)
|
|
|
|
|
|
{
|
2023-05-16 22:53:11 +08:00
|
|
|
|
base.Init(initNew);
|
2023-05-14 23:26:08 +08:00
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase line = new LineDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(38, 38), new Point(118, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(line);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase rectangle = new RectangleDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(138, 38), new Point(218, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(rectangle);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase ellipse = new EllipseDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(238, 38), new Point(318, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(ellipse);
|
|
|
|
|
|
|
2023-05-15 20:13:42 +08:00
|
|
|
|
DesignerItemViewModelBase text = new TextDrawingDesignerItemViewModel(DiagramViewModel, new Point(338, 38), "欢迎使用AIStudio画板", true);
|
2023-05-14 23:26:08 +08:00
|
|
|
|
DiagramViewModel.Add(text);
|
2023-05-15 20:13:42 +08:00
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase triangle = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableTriangle, new List<Point> { new Point(438, 38), new Point(518, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(triangle);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase rhombus = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableRhombus, new List<Point> { new Point(538, 38), new Point(618, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(rhombus);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase hexagon = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableHexagon, new List<Point> { new Point(638, 38), new Point(718, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(hexagon);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase pentagram = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasablePentagram, new List<Point> { new Point(738, 38), new Point(818, 118) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(pentagram);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase starFour = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableStarFour, new List<Point> { new Point(38, 138), new Point(118, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(starFour);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase starThree = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableStarThree, new List<Point> { new Point(138, 138), new Point(218, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(starThree);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase chat = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableChat, new List<Point> { new Point(238, 138), new Point(318, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(chat);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase comment = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableComment, new List<Point> { new Point(338, 138), new Point(418, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(comment);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase cloud = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableCloud, new List<Point> { new Point(438, 138), new Point(518, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(cloud);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase arrowRight = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableArrowRight, new List<Point> { new Point(538, 138), new Point(618, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(arrowRight);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase arrowLeft = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableArrowLeft, new List<Point> { new Point(638, 138), new Point(718, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(arrowLeft);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase check = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableCheck, new List<Point> { new Point(738, 138), new Point(818, 218) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(check);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase close = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableClose, new List<Point> { new Point(38, 238), new Point(118, 318) }, true);
|
|
|
|
|
|
DiagramViewModel.Add(close);
|
|
|
|
|
|
|
|
|
|
|
|
DesignerItemViewModelBase heart = new SharpDrawingDesignerItemViewModel(DiagramViewModel, DrawMode.ErasableHeart, new List<Point> { new Point(138, 238), new Point(218, 318) }, true);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DiagramViewModel.Add(heart);
|
2023-05-15 20:13:42 +08:00
|
|
|
|
|
2023-05-15 22:57:13 +08:00
|
|
|
|
DesignerItemViewModelBase polyline = new PolylineDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(238, 238), new Point(298, 258), new Point(258, 298), new Point(318, 318) }, true);
|
2023-05-15 20:13:42 +08:00
|
|
|
|
DiagramViewModel.Add(polyline);
|
|
|
|
|
|
|
2023-05-15 22:57:13 +08:00
|
|
|
|
DesignerItemViewModelBase polygon = new PolygonDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(338, 238), new Point(398, 258), new Point(358, 298), new Point(418, 318) }, true);
|
2023-05-15 20:13:42 +08:00
|
|
|
|
DiagramViewModel.Add(polygon);
|
2023-05-15 22:57:13 +08:00
|
|
|
|
|
|
|
|
|
|
//画正方形
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint1 = DrawingHelper.GetPoints(new Point(38, 518), 0, Enumerable.Repeat(new System.Tuple<double, double>(160, -90), 4).ToList());
|
2023-05-15 22:57:13 +08:00
|
|
|
|
DesignerItemViewModelBase directLine1 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint1, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine1);
|
|
|
|
|
|
|
|
|
|
|
|
//画三角形
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint2 = DrawingHelper.GetPoints(new Point(238, 518), 0, Enumerable.Repeat(new System.Tuple<double, double>(160, -120), 3).ToList());
|
2023-05-15 22:57:13 +08:00
|
|
|
|
DesignerItemViewModelBase directLine2 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint2, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine2);
|
|
|
|
|
|
|
|
|
|
|
|
//画五边形
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint3 = DrawingHelper.GetPoints(new Point(478, 518), 0, Enumerable.Repeat(new System.Tuple<double, double>(100, -72), 5).ToList());
|
2023-05-15 22:57:13 +08:00
|
|
|
|
DesignerItemViewModelBase directLine3 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint3, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine3);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
|
|
|
|
|
|
//画六角形
|
|
|
|
|
|
List<System.Tuple<double, double>> tuple4 = new List<System.Tuple<double, double>>();
|
|
|
|
|
|
for (int i = 0; i < 5; i++)
|
|
|
|
|
|
{
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple4.Add(new System.Tuple<double, double>(70, 144));
|
|
|
|
|
|
tuple4.Add(new System.Tuple<double, double>(70, -72));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint4 = DrawingHelper.GetPoints(new Point(750, 408), 0, tuple4);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DesignerItemViewModelBase directLine4 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint4, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine4);
|
|
|
|
|
|
|
|
|
|
|
|
//画八边形
|
|
|
|
|
|
List<System.Tuple<double, double>> tuple5 = new List<System.Tuple<double, double>>();
|
|
|
|
|
|
for (int i = 0; i < 8; i++)
|
|
|
|
|
|
{
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple5.Add(new System.Tuple<double, double>(36, -90));
|
|
|
|
|
|
tuple5.Add(new System.Tuple<double, double>(36, 45));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint5 = DrawingHelper.GetPoints(new Point(153, 689), 0, tuple5);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DesignerItemViewModelBase directLine5 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint5, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine5);
|
|
|
|
|
|
|
|
|
|
|
|
//画6个正三角形
|
|
|
|
|
|
List<System.Tuple<double, double>> tuple6 = new List<System.Tuple<double, double>>();
|
|
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int j = 0; j < 3; j++)
|
|
|
|
|
|
{
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple6.Add(new System.Tuple<double, double>(80, -120));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple6.Add(new System.Tuple<double, double>(0, -60));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint6 = DrawingHelper.GetPoints(new Point(328, 628), 0, tuple6);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DesignerItemViewModelBase directLine6 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint6, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine6);
|
|
|
|
|
|
|
|
|
|
|
|
//画6个正六边形
|
|
|
|
|
|
List<System.Tuple<double, double>> tuple7 = new List<System.Tuple<double, double>>();
|
|
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int j = 0; j < 6; j++)
|
|
|
|
|
|
{
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple7.Add(new System.Tuple<double, double>(42, -60));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple7.Add(new System.Tuple<double, double>(0, -60));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint7 = DrawingHelper.GetPoints(new Point(528, 628), 0, tuple7);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DesignerItemViewModelBase directLine7 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint7, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine7);
|
|
|
|
|
|
|
|
|
|
|
|
//画8个八角星
|
|
|
|
|
|
List<System.Tuple<double, double>> tuple8 = new List<System.Tuple<double, double>>();
|
|
|
|
|
|
for (int i = 0; i < 8; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int j = 0; j < 8; j++)
|
|
|
|
|
|
{
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple8.Add(new System.Tuple<double, double>(20, -90));
|
|
|
|
|
|
tuple8.Add(new System.Tuple<double, double>(20, 45));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
tuple8.Add(new System.Tuple<double, double>(0, -45));
|
2023-05-16 22:53:11 +08:00
|
|
|
|
}
|
2023-05-20 17:22:12 +08:00
|
|
|
|
var drawingPoint8 = DrawingHelper.GetPoints(new Point(728, 628), 0, tuple8);
|
2023-05-16 22:53:11 +08:00
|
|
|
|
DesignerItemViewModelBase directLine8 = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, drawingPoint8, true);
|
|
|
|
|
|
DiagramViewModel.Add(directLine8);
|
2023-05-14 23:26:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void Dispose()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Dispose();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|