コード例 #1
0
        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]);
        }
コード例 #2
0
        public FWLineWindow(FWLine fwLine)
        {
            InitializeComponent();

            FlowLine = fwLine;

            this.DataContext = fwLine;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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);
        }