mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-05-04 23:10:25 +08:00
形状demo
This commit is contained in:
@@ -53,8 +53,59 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
DesignerItemViewModelBase ellipse = new EllipseDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(238, 38), new Point(318, 118) }, true);
|
DesignerItemViewModelBase ellipse = new EllipseDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { new Point(238, 38), new Point(318, 118) }, true);
|
||||||
DiagramViewModel.Add(ellipse);
|
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);
|
DiagramViewModel.Add(text);
|
||||||
|
|
||||||
|
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);
|
||||||
|
DiagramViewModel.Add(heart);
|
||||||
|
|
||||||
|
DesignerItemViewModelBase directLine = new DirectLineDrawingDesignerItemViewModel(DiagramViewModel, new List<Point> { 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<Point> { 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<Point> { new Point(438, 238), new Point(498, 258), new Point(458, 298), new Point(518, 318) }, true);
|
||||||
|
DiagramViewModel.Add(polygon);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List<Point> points, bool erasable) : base(root, drawMode, points, erasable)
|
public DirectLineDrawingDesignerItemViewModel(IDiagramViewModel root, List<Point> 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 geometry = new PathGeometry();
|
||||||
var figure = new PathFigure { StartPoint = Points[0] };
|
var figure = new PathFigure { StartPoint = Points[0] };
|
||||||
@@ -50,12 +50,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
LineSegment arc = new LineSegment(point, true);
|
LineSegment arc = new LineSegment(point, true);
|
||||||
geometry.Figures[0].Segments.Add(arc);
|
geometry.Figures[0].Segments.Add(arc);
|
||||||
}
|
}
|
||||||
|
|
||||||
Geometry = geometry;
|
Geometry = geometry;
|
||||||
IsFinish = true;
|
|
||||||
}
|
}
|
||||||
base.InitNew();
|
base.InitNewDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
||||||
@@ -152,7 +151,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
public override bool OnMouseUp(IInputElement sender, MouseButtonEventArgs e)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -161,7 +160,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
if (Geometry is PathGeometry geometry)
|
if (Geometry is PathGeometry geometry)
|
||||||
{
|
{
|
||||||
var preLine = geometry.Figures[0].Segments.LastOrDefault();
|
var preLine = geometry.Figures[0].Segments.LastOrDefault();
|
||||||
if (preLine != _lastLine)
|
if (preLine != _lastLine && _lastLine != null)
|
||||||
{
|
{
|
||||||
geometry.Figures[0].Segments.Remove(preLine);
|
geometry.Figures[0].Segments.Remove(preLine);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List<Point> points, bool erasable) : base(root, drawMode, points, erasable)
|
public PolygonDrawingDesignerItemViewModel(IDiagramViewModel root, List<Point> points, bool erasable) : base(root, DrawMode.ErasablePolygon, points, erasable)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -32,9 +32,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitNew()
|
protected override void InitNewDrawing()
|
||||||
{
|
{
|
||||||
if (Points?.Count > 1)
|
if (IsFinish)
|
||||||
{
|
{
|
||||||
var geometry = new PathGeometry();
|
var geometry = new PathGeometry();
|
||||||
var figure = new PathFigure { StartPoint = Points[0] };
|
var figure = new PathFigure { StartPoint = Points[0] };
|
||||||
@@ -50,11 +50,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
Geometry = geometry;
|
Geometry = geometry;
|
||||||
IsFinish = true;
|
|
||||||
}
|
}
|
||||||
base.InitNew();
|
base.InitNewDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.LeftButton == MouseButtonState.Pressed)
|
if (e.LeftButton == MouseButtonState.Pressed)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List<Point> points, bool erasable) : base(root, drawMode, points, erasable)
|
public PolylineDrawingDesignerItemViewModel(IDiagramViewModel root, List<Point> points, bool erasable) : base(root, DrawMode.ErasablePolyline, points, erasable)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -37,9 +37,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitNew()
|
protected override void InitNewDrawing()
|
||||||
{
|
{
|
||||||
if (Points?.Count > 1)
|
if (IsFinish)
|
||||||
{
|
{
|
||||||
var geometry = new PathGeometry();
|
var geometry = new PathGeometry();
|
||||||
var figure = new PathFigure { StartPoint = Points[0] };
|
var figure = new PathFigure { StartPoint = Points[0] };
|
||||||
@@ -54,9 +54,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
Geometry = geometry;
|
Geometry = geometry;
|
||||||
IsFinish= true;
|
|
||||||
}
|
}
|
||||||
base.InitNew();
|
base.InitNewDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
||||||
|
|||||||
@@ -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();
|
var path = GetPath();
|
||||||
PathGeometry pathGeometry = PathGeometry.CreateFromGeometry(Geometry.Parse(path));
|
PathGeometry pathGeometry = PathGeometry.CreateFromGeometry(Geometry.Parse(path));
|
||||||
@@ -49,11 +49,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
transformGroup.Children.Add(new ScaleTransform(radiox, radioy));
|
transformGroup.Children.Add(new ScaleTransform(radiox, radioy));
|
||||||
pathGeometry.Transform = transformGroup;
|
pathGeometry.Transform = transformGroup;
|
||||||
Geometry = pathGeometry;
|
Geometry = pathGeometry;
|
||||||
IsFinish = true;
|
|
||||||
}
|
}
|
||||||
base.InitNew();
|
base.InitNewDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.LeftButton == MouseButtonState.Pressed)
|
if (e.LeftButton == MouseButtonState.Pressed)
|
||||||
|
|||||||
Reference in New Issue
Block a user