mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
形状demo
This commit is contained in:
@@ -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 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);
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user