mind的拷贝完成

This commit is contained in:
艾竹
2023-03-25 22:10:49 +08:00
parent b36bd4b228
commit 5e5da021ab
13 changed files with 189 additions and 103 deletions

View File

@@ -30,7 +30,7 @@ namespace AIStudio.Wpf.Mind.Helpers
mindNode.ClearConnectors();
var port = new FullyCreatedConnectorInfo(mindNode.Root, mindNode, ConnectorOrientation.None, true) { XRatio = 0.5, YRatio = 0.5 };
mindNode.AddConnector(port);
mindNode.AddConnector(port);
}
mindNode.ShapeViewModel.SinkMarker.PathStyle = ArrowPathStyle.Circle;
mindNode.ShapeViewModel.SinkMarker.SizeStyle = ArrowSizeStyle.VerySmall;
@@ -89,12 +89,9 @@ namespace AIStudio.Wpf.Mind.Helpers
}
connector.ColorViewModel.LineColor = source.ColorViewModel.LineColor;
connector.SmoothMargin = 20;
connector.SmoothAutoSlope = 0.2;
connector.OrthogonalShapeMargin = 2;
connector.OrthogonalGlobalBoundsMargin = 5;
connector.ShapeViewModel.SinkMarker.PathStyle = source.ShapeViewModel.SinkMarker.PathStyle;
connector.ShapeViewModel.SinkMarker.SizeStyle = source.ShapeViewModel.SinkMarker.SizeStyle;
connector.SetPathGeneratorParameter(smoothMargin: 20, smoothAutoSlope: 0.2, orthogonalShapeMargin: 2, orthogonalGlobalBoundsMargin: 5);
return connector;
}
@@ -114,7 +111,7 @@ namespace AIStudio.Wpf.Mind.Helpers
public SizeBase MeasureOverride(MindNode mindNode, bool isExpanded = true)
{
var sizewithSpacing = mindNode.SizeWithSpacing;
var sizewithSpacing = mindNode.SizeWithSpacing;
if (mindNode.Children?.Count > 0)
{
if (mindNode.NodeLevel == 0)
@@ -132,7 +129,7 @@ namespace AIStudio.Wpf.Mind.Helpers
var childrensizes = mindNode.Children.Select(p => MeasureOverride(p, mindNode.IsExpanded && isExpanded)).ToArray();
sizewithSpacing = new SizeBase(sizewithSpacing.Width + childrensizes.MaxOrDefault(p => p.Width), Math.Max(sizewithSpacing.Height, childrensizes.SumOrDefault(p => p.Height)));
}
}
}
mindNode.DesiredSize = isExpanded ? sizewithSpacing : new SizeBase(0, 0);
mindNode.Visible = isExpanded;
@@ -145,14 +142,14 @@ namespace AIStudio.Wpf.Mind.Helpers
{
if (mindNode.Children?.Count > 0)
{
var rights = mindNode.Children.Where(p => p.ConnectorOrientation == ConnectorOrientation.Left).ToList();
var rights = mindNode.Children.Where(p => p.ConnectorOrientation == ConnectorOrientation.Left).ToList();
double left = mindNode.MiddlePosition.X + mindNode.ItemWidth / 2 + mindNode.Spacing.Width;
double lefttop = mindNode.MiddlePosition.Y - Math.Min(mindNode.DesiredSize.Height, rights.SumOrDefault(p => p.DesiredSize.Height)) / 2;
foreach (var child in rights)
{
child.Left = left + child.Spacing.Width + child.Offset.X;
child.Top = lefttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
child.DesiredPosition = child.Position;
child.DesiredPosition = new PointBase(left + child.Spacing.Width, lefttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
lefttop += child.DesiredSize.Height;
ArrangeOverride(child);
@@ -170,7 +167,7 @@ namespace AIStudio.Wpf.Mind.Helpers
{
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X;
child.Top = righttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
child.DesiredPosition = child.Position;
child.DesiredPosition = new PointBase(right - child.Spacing.Width - child.ItemWidth, righttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
righttop += child.DesiredSize.Height;
ArrangeOverride(child);
@@ -181,6 +178,8 @@ namespace AIStudio.Wpf.Mind.Helpers
connector?.SetVisible(child.Visible);
}
}
mindNode.DesiredPosition = mindNode.Position;
}
else
{
@@ -194,7 +193,7 @@ namespace AIStudio.Wpf.Mind.Helpers
{
child.Left = left + child.Spacing.Width + child.Offset.X;
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
child.DesiredPosition = child.Position;
child.DesiredPosition = new PointBase(left + child.Spacing.Width, top + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
top += child.DesiredSize.Height;
ArrangeOverride(child);
@@ -216,7 +215,7 @@ namespace AIStudio.Wpf.Mind.Helpers
{
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X;
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
child.DesiredPosition = child.Position;
child.DesiredPosition = new PointBase(right - child.Spacing.Width - child.ItemWidth, top + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
top += child.DesiredSize.Height;
ArrangeOverride(child);
@@ -230,6 +229,7 @@ namespace AIStudio.Wpf.Mind.Helpers
}
}
}