mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-01 06:36:36 +08:00
线条文本可以保存了
This commit is contained in:
@@ -15,8 +15,8 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
public static string ToJson(this IDiagramViewModel diagram)
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(new {
|
||||
Nodes = diagram.Items.OfType<DesignerItemViewModelBase>().Select(p => p.ToDiagramNode()),
|
||||
Links = diagram.Items.OfType<ConnectorViewModel>().Select(p => p.ToDiagramLink())
|
||||
Nodes = diagram.Items.OfType<DesignerItemViewModelBase>().Select(p => p.ToDiagramNode()).Where(p => p != null),
|
||||
Links = diagram.Items.OfType<ConnectorViewModel>().Select(p => p.ToDiagramLink()).Where(p => p != null)
|
||||
}, new JsonSerializerSettings
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
|
||||
@@ -45,10 +45,14 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
}
|
||||
else
|
||||
{
|
||||
diagramNode = new DiagramNode();
|
||||
return null;
|
||||
}
|
||||
|
||||
diagramNode.Id = nodeModel.Id.ToString();
|
||||
if (nodeModel.ParentId != new Guid())
|
||||
{
|
||||
diagramNode.ParentId = nodeModel.ParentId.ToString();
|
||||
}
|
||||
diagramNode.Label = nodeModel.Text;
|
||||
diagramNode.Width = nodeModel.ItemWidth * nodeModel.Parent.ScreenScale;
|
||||
diagramNode.Height = nodeModel.ItemHeight * nodeModel.Parent.ScreenScale;
|
||||
@@ -69,6 +73,7 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
diagramLink.Color = SerializeHelper.SerializeColor(linkModel.ColorViewModel.LineColor.Color);
|
||||
diagramLink.SelectedColor = SerializeHelper.SerializeColor(Colors.Black);
|
||||
diagramLink.Width = linkModel.ColorViewModel.LineWidth;
|
||||
diagramLink.Label = linkModel.Text;
|
||||
|
||||
if (linkModel.SinkConnectorInfo is FullyCreatedConnectorInfo sinkConnector)
|
||||
{
|
||||
@@ -88,6 +93,10 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
diagramLink.SourcePortAlignment = linkModel.SourceConnectorInfo.Orientation.ToString();
|
||||
diagramLink.TargetPortAlignment = sinkConnector.Orientation.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return diagramLink;
|
||||
}
|
||||
#endregion
|
||||
@@ -196,6 +205,10 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
}
|
||||
|
||||
nodeModel.Id = new Guid(diagramNode.Id);
|
||||
if (!string.IsNullOrEmpty(diagramNode.ParentId))
|
||||
{
|
||||
nodeModel.ParentId = new Guid(diagramNode.ParentId);
|
||||
}
|
||||
nodeModel.Parent = diagram;
|
||||
nodeModel.Text = diagramNode.Label;
|
||||
nodeModel.ItemWidth = diagramNode.Width / diagram.ScreenScale;
|
||||
@@ -212,10 +225,14 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
{
|
||||
FullyCreatedConnectorInfo sourceConnectorInfo = sourceNode.Connectors.FirstOrDefault(p => p.Orientation.ToString() == diagramLink.SourcePortAlignment);
|
||||
FullyCreatedConnectorInfo sinkConnectorInfo = targetNode.Connectors.FirstOrDefault(p => p.Orientation.ToString() == diagramLink.TargetPortAlignment);
|
||||
ConnectorViewModel linkModel = new ConnectorViewModel(sourceConnectorInfo, sinkConnectorInfo, diagram.VectorLineDrawMode ?? DrawMode.BoundaryConnectingLine);
|
||||
ConnectorViewModel linkModel = new ConnectorViewModel(diagram, sourceConnectorInfo, sinkConnectorInfo, diagram.DrawModeViewModel?.VectorLineDrawMode ?? DrawMode.BoundaryConnectingLine);
|
||||
linkModel.Id = new Guid(diagramLink.Id);
|
||||
linkModel.ColorViewModel.LineColor.Color = SerializeHelper.DeserializeColor(diagramLink.Color);
|
||||
linkModel.ColorViewModel.LineWidth = diagramLink.Width;
|
||||
if (!string.IsNullOrEmpty(diagramLink.Label))
|
||||
{
|
||||
linkModel.AddText(diagramLink.Label);
|
||||
}
|
||||
//线条形状与箭头待处理
|
||||
//switch (diagramLink.Router)
|
||||
//{
|
||||
|
||||
Reference in New Issue
Block a user