diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorVertexItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorVertexItem.cs
index 3c35ef9..a61a4e7 100644
--- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorVertexItem.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorVertexItem.cs
@@ -19,7 +19,13 @@ namespace AIStudio.Wpf.DiagramDesigner
public ConnectorVertexItem(ConnectorVertexModel viewmodel) : base(viewmodel)
{
+ ConnectorVertexType = viewmodel.ConnectorVertexType;
+ }
+ [XmlAttribute]
+ public ConnectorVertexType ConnectorVertexType
+ {
+ get; set;
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
index 0227b48..6c50a8a 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
@@ -543,7 +543,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (e.PropertyName == nameof(ShapeViewModel.SourceMarker) ||
e.PropertyName == nameof(ShapeViewModel.SinkMarker))
{
- UpdateArea();
+ UpdatePathGeneratorResult();
}
}
else if (sender is DesignerItemViewModelBase)
@@ -677,8 +677,6 @@ namespace AIStudio.Wpf.DiagramDesigner
StartAngle = PathGeneratorResult.SourceMarkerAngle;
EndAngle = PathGeneratorResult.TargetMarkerAngle;
- //StartPoint = new PointBase(source.Value.X - Area.Left - SourceConnectorInfoFully.ConnectorWidth / 2, source.Value.Y - Area.Top - SourceConnectorInfoFully.ConnectorHeight / 2) ;
- //EndPoint = new PointBase(target.Value.X - Area.Left - SinkConnectorInfo.ConnectorWidth / 2 , target.Value.Y - Area.Top - SinkConnectorInfo.ConnectorHeight / 2 );
StartPoint = new PointBase(source.Value.X - Area.Left , source.Value.Y - Area.Top );
EndPoint = new PointBase(target.Value.X - Area.Left , target.Value.Y - Area.Top);
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs
index 51c4de3..86c2860 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs
@@ -170,7 +170,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
-
private bool _dragStart;
public bool DragStart
{
@@ -190,7 +189,6 @@ namespace AIStudio.Wpf.DiagramDesigner
Y = position.Y;
}
-
public static ConnectorPointModel operator -(ConnectorPointModel a, ConnectorPointModel b)
{
return new ConnectorPointModel(a.X - b.X, a.Y - b.Y);
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs
index abdc049..211c80b 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs
@@ -46,7 +46,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (designerbase is ConnectorVertexItem designer)
{
-
+ designer.ConnectorVertexType = designer.ConnectorVertexType;
}
}
diff --git a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
index 2ea2379..4ba5505 100644
--- a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
+++ b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
@@ -22,19 +22,77 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.Add(node1);
- DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
+ DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 50, Text = "2" };
DiagramViewModel.Add(node2);
- DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
- DiagramViewModel.Add(node3);
-
- ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
+ connector1.ShapeViewModel.SourceMarker = SharpPath.Arrow;
+ connector1.ShapeViewModel.SinkMarker = SharpPath.Arrow;
+ connector1.AddLabel("Arrow");
+ connector1.AnimationViewModel.Duration = 3;
connector1.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ connector1.AnimationViewModel.AnimationPath = SharpPath.Arrow;
DiagramViewModel.Add(connector1);
- ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
- connector2.AnimationViewModel.Animation = LineAnimation.PathAnimation;
- DiagramViewModel.Add(connector2);
+ node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 160, Text = "1" };
+ DiagramViewModel.Add(node1);
+
+ node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 160, Text = "2" };
+ DiagramViewModel.Add(node2);
+
+ connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
+ connector1.ShapeViewModel.SourceMarker = SharpPath.Circle;
+ connector1.ShapeViewModel.SinkMarker = SharpPath.Circle;
+ connector1.AddLabel("Circle");
+ connector1.AnimationViewModel.Duration = 3;
+ connector1.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ connector1.AnimationViewModel.AnimationPath = SharpPath.Circle;
+ DiagramViewModel.Add(connector1);
+
+ node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 270, Text = "1" };
+ DiagramViewModel.Add(node1);
+
+ node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 270, Text = "2" };
+ DiagramViewModel.Add(node2);
+
+ connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
+ connector1.ShapeViewModel.SourceMarker = SharpPath.Square;
+ connector1.ShapeViewModel.SinkMarker = SharpPath.Square;
+ connector1.AddLabel("Square");
+ connector1.AnimationViewModel.Duration = 3;
+ connector1.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ connector1.AnimationViewModel.AnimationPath = SharpPath.Square;
+ DiagramViewModel.Add(connector1);
+
+ node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 380, Text = "1" };
+ DiagramViewModel.Add(node1);
+
+ node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 380, Text = "2" };
+ DiagramViewModel.Add(node2);
+
+ connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
+ connector1.ShapeViewModel.SourceMarker = SharpPath.NewRectangle(10, 20);
+ connector1.ShapeViewModel.SinkMarker = SharpPath.NewArrow(20, 10);
+ connector1.AddLabel("Factory");
+ connector1.AnimationViewModel.Duration = 3;
+ connector1.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ connector1.AnimationViewModel.AnimationPath = SharpPath.NewRectangle(10, 20);
+ DiagramViewModel.Add(connector1);
+
+ node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 490, Text = "1" };
+ DiagramViewModel.Add(node1);
+
+ node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 490, Text = "2" };
+ DiagramViewModel.Add(node2);
+
+ connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
+ connector1.ShapeViewModel.SourceMarker = new SharpPath("M 0 -8 L 3 -8 3 8 0 8 z M 4 -8 7 -8 7 8 4 8 z M 8 -8 16 0 8 8 z", 16, 16, PathStyle.Arrow, SizeStyle.ExtraLarge);
+ connector1.ShapeViewModel.SinkMarker = new SharpPath("M 0 -8 L 8 -8 4 0 8 8 0 8 4 0 z", 8, 8, PathStyle.Arrow, SizeStyle.Small);
+ connector1.AddLabel("Custom");
+ connector1.AnimationViewModel.Duration = 3;
+ connector1.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ connector1.AnimationViewModel.AnimationPath = new SharpPath("M 0 -8 L 3 -8 3 8 0 8 z M 4 -8 7 -8 7 8 4 8 z M 8 -8 16 0 8 8 z", 16, 16, PathStyle.Arrow, SizeStyle.ExtraLarge);
+ DiagramViewModel.Add(connector1);
}
}
}
diff --git a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Ports/ColoredPortViewModel.cs b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Ports/ColoredPortViewModel.cs
index c933549..4d9289f 100644
--- a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Ports/ColoredPortViewModel.cs
+++ b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Ports/ColoredPortViewModel.cs
@@ -67,7 +67,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
}
- public override bool CanAttachTo(FullyCreatedConnectorInfo port)
+ public override bool CanAttachTo(ConnectorInfoBase port)
{
// Checks for same-node/port attachements
if (!base.CanAttachTo(port))
diff --git a/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_p3eder0o_wpftmp.csproj b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_p3eder0o_wpftmp.csproj
new file mode 100644
index 0000000..abd163d
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_p3eder0o_wpftmp.csproj
@@ -0,0 +1,276 @@
+
+
+ AIStudio.Wpf.Script
+ obj\Debug\
+ obj\
+ F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.Script\obj\
+ <_TargetAssemblyProjectName>AIStudio.Wpf.Script
+
+
+
+ true
+ AIStudio.Wpf.Controls
+ akwkevin
+ https://gitee.com/akwkevin
+ A.png
+
+
+ 1.0.6
+ 一个Wpf的脚本生成模块
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_v1wr2zl0_wpftmp.csproj b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_v1wr2zl0_wpftmp.csproj
new file mode 100644
index 0000000..186a2f4
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_v1wr2zl0_wpftmp.csproj
@@ -0,0 +1,268 @@
+
+
+ AIStudio.Wpf.Script
+ obj\Debug\
+ obj\
+ F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.Script\obj\
+ <_TargetAssemblyProjectName>AIStudio.Wpf.Script
+
+
+
+ true
+ AIStudio.Wpf.Controls
+ akwkevin
+ https://gitee.com/akwkevin
+ A.png
+
+
+ 1.0.6
+ 一个Wpf的脚本生成模块
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file