示例#1
0
 private void AddAutoConstraints(Vertex v1, Vertex v2)
 {
     if (Math.Abs(v1.X - v2.X) < 5)
     {
         var constraint = new VerticalEdgeConstraint(v1, v2);
         constraints.Add(constraint);
         constraint.TryRepairConstraint(this);
     }
     if (Math.Abs(v1.Y - v2.Y) < 5)
     {
         var constraint = new HorizontalEdgeConstraint(v1, v2);
         constraints.Add(constraint);
         constraint.TryRepairConstraint(this);
     }
 }
        public ConstraintOperationResult CanAddConstraintHorizontalEdge()
        {
            var constraint = new HorizontalEdgeConstraint();
            var e          = addingEdgeConstraintOrVerticeState.selectedEdge;
            // firstly checks with startY
            var canAccStart = e.CanAddConstraintAndApply(constraint, e.start.X, e.start.Y, e.end.X, e.start.Y);

            if (canAccStart.Success)
            {
                return(canAccStart);
            }
            //then check accorindg to endX
            var canAccEnd = e.CanAddConstraintAndApply(constraint, e.start.X, e.end.Y, e.end.X, e.end.Y);

            if (canAccEnd.Success)
            {
                return(canAccStart);
            }

            return(new ConstraintOperationResult(false, ConstraintOperationKind.AddAndApplyWithCheck));
        }