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