private void DrawFlowPath(FWLine fwLine, FWSymbol startConnector, FWSymbol endConnector) { Point[] startPoints = startConnector.RectPoints; Point[] endPoints = endConnector.RectPoints; double minDistance = double.MaxValue; double distance; int shortestI = -1, shortestJ = -1; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { distance = GetDistance(startPoints[i], endPoints[j]); if (minDistance > distance) { minDistance = distance; shortestI = i; shortestJ = j; } } } fwLine.DrawLine(startPoints[shortestI], endPoints[shortestJ]); }
public FWLineWindow(FWLine fwLine) { InitializeComponent(); FlowLine = fwLine; this.DataContext = fwLine; }
private void FlowComponent_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { FWLine fwLine = FWSymbol as FWLine; fwLine.IsSelected = true; fwLine.Thickness = 3; FlowchartDesigner.ReconnectLine(); FlowManager.Instance.ActionWindow.ChangePanel(fwLine.SymbolActionWindow); }
public FlowComponent(FWLine fwLine, FlowchartDesigner flowchartDesigner) { InitializeComponent(); FlowchartDesigner = flowchartDesigner; SetValue(Canvas.TopProperty, fwLine.Top); SetValue(Canvas.LeftProperty, fwLine.Left); this.Content = fwLine.Line; this.FWSymbol = fwLine; HideSelection(); this.MouseDown += FlowComponent_MouseDown; }
private void ConnectLine(FWSymbol startConnector, FWSymbol endConnector) { if (startConnector.EndConnector != null) { return; } FWLine fwLine = new FWLine { StartConnector = startConnector, EndConnector = endConnector }; if (startConnector is FWDecision fwDecision) { if (fwDecision.EndConnector[0] == null) { fwDecision.EndConnector[0] = fwLine; } else if (fwDecision.EndConnector[1] == null) { fwDecision.EndConnector[1] = fwLine; } else { return; } endConnector.StartConnector = fwLine; } else { startConnector.EndConnector = fwLine; endConnector.StartConnector = fwLine; } FWSymbolList.Add(fwLine); DrawFlowPath(fwLine, startConnector, endConnector); FlowComponent flowComponent = new FlowComponent(fwLine, this); canvasArea.Children.Add(flowComponent); }