コード例 #1
0
        private void tsBtnAddEdge_Click(object sender, EventArgs e)
        {
            if (sourceModel == null || stockModel == null ||
                sourceModel.Key == stockModel.Key)
            {
                return;
            }

            string weight = null;

            if (_field.IsWeighted)
            {
                SetWeightForm window = new SetWeightForm();
                window.Owner = this;
                window.ShowDialog();
                if (window.Ok)
                {
                    weight = window.Weight;
                }
            }
            AEdgeModel edgeModel;

            if (_field.IsOrgraph)
            {
                edgeModel = new OrientEdgeModel(sourceModel, stockModel, weight);
            }
            else
            {
                edgeModel = new NonOrientEdgeModel(sourceModel, stockModel, weight);
            }

            CommandEntered?.Invoke(this, new AddModelCommandArgs(edgeModel));
            _field.UnmarkGraphModels();
        }
コード例 #2
0
ファイル: Painter.cs プロジェクト: geg-antonyan/VisualGraph
        private void DrawOrientedEdge(Graphics g, OrientEdgeModel edge, vec2 min, vec2 max)
        {
            vec2 A = new vec2(edge.PosA);
            vec2 B = new vec2(edge.PosB);

            if (Clip.RectangleClip(ref A, ref B, min, max))
            {
                g.DrawLine(pen, A.x, A.y, B.x, B.y);
            }
            B = new vec2(edge.PosB);
            vec2 C = new vec2(edge.PosC);

            if (Clip.RectangleClip(ref B, ref C, min, max))
            {
                g.DrawLine(pen, B.x, B.y, C.x, C.y);
            }
            C = new vec2(edge.PosC);
            vec2 D = new vec2(edge.PosD);

            if (Clip.RectangleClip(ref C, ref D, min, max) && (C - D).Length() > 6)
            {
                endPen.Color = pen.Color;
                endPen.Width = pen.Width;
                if (!D.Equals(edge.PosD))
                {
                    ServiceFunctions.Swap(ref D, ref C);
                }
                g.DrawLine(endPen, C.x, C.y, D.x, D.y);
            }
            if (edge.Weighted && Clip.SimpleClip(new vec2(edge.WeightPos.x + 5f, edge.WeightPos.y + 5f), max, min, GlobalParameters.Radius))
            {
                DrawWeight(g, edge, min, max);
            }
        }