Ejemplo n.º 1
0
        public void BeginAdd(_Line line)
        {
            _addLine = line;
            this.Visibility = Visibility.Visible;

            this.PreviewMouseMove -= AddLinePoint1Canvas_PreviewMouseMove;
            this.PreviewMouseLeftButtonUp -= AddLinePoint1Canvas_PreviewMouseLeftButtonUp;
            this.PreviewMouseMove -= AddLinePoint2Canvas_PreviewMouseMove;
            this.PreviewMouseLeftButtonUp -= AddLinePoint2Canvas_PreviewMouseLeftButtonUp;

            this.PreviewMouseMove += AddLinePoint1Canvas_PreviewMouseMove;
            this.PreviewMouseLeftButtonUp += AddLinePoint1Canvas_PreviewMouseLeftButtonUp;
        }
Ejemplo n.º 2
0
 private Point OnLinePoint2Added(_Line source, Point a, Point b)
 {
     if (!DesginCanvas.IsAutoAlign)
     {
         return a;
     }
     AlignCanvas.Clear();
     Point point = new Point(double.NaN, double.NaN);
     foreach (UIElement ui in DesginCanvas.Children)
     {
         if (DesginCanvas.SelectedControls.Contains(ui as _Control))
         {
             continue;
         }
         if (ui is _Line)
         {
             _Line line = ui as _Line;
             point = AlignCanvas.MeasurePoint(a, b, new Point(line.Line.X1 + line.Left, line.Line.Y1 + line.Top), new Point(line.Line.X2 + line.Left, line.Line.Y2 + line.Top));
             if (!double.IsNaN(point.X))
             {
                 return new Point(point.X - source.Left, point.Y - source.Top);
             }
         }
         else if (ui is _Rectangle)
         {
             _Control element = ui as _Control;
             Point a1 = new Point(element.Left, element.Top);
             Point b1 = new Point(element.Left + element.Width, element.Top);
             Point c1 = new Point(element.Left + element.Width, element.Top + element.Height);
             Point d1 = new Point(element.Left, element.Top + element.Height);
             point = AlignCanvas.MeasurePoint(a, b, a1, b1);
             if (!double.IsNaN(point.X))
             {
                 return point;
             }
             else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, b1, c1)).X))
             {
                 return point;
             }
             else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, c1, d1)).X))
             {
                 return point;
             }
             else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, d1, a1)).X))
             {
                 return point;
             }
         }
     }
     return AlignCanvas.Orthogonal(a, b);
 }
Ejemplo n.º 3
0
 private void OnLinePoint2Adding(_Line source, Point a, Point b)
 {
     if (!DesginCanvas.IsAutoAlign)
     {
         return;
     }
     LineAddingMode(source, a, b);
 }
Ejemplo n.º 4
0
        private void OnLinePoint1Adding(_Line source, Point a)
        {
            if (!DesginCanvas.IsAutoAlign)
            {
                return;
            }
            List<Point> points = new List<Point>();
            foreach (UIElement ui in DesginCanvas.Children)
            {
                if (DesginCanvas.SelectedControls.Contains(ui as _Control))
                {
                    continue;
                }
                if (ui is _Line)
                {
                    _Line line = ui as _Line;
                    Point point = AlignCanvas.MeasurePoint(a, new Point(line.Line.X1 + line.Left, line.Line.Y1 + line.Top), new Point(line.Line.X2 + line.Left, line.Line.Y2 + line.Top));
                    if (!double.IsNaN(point.X))
                    {
                        points.Add(point);
                    }
                }
                else if (ui is _Rectangle)
                {
                    _Control element = ui as _Control;
                    Point a1 = new Point(element.Left, element.Top);
                    Point b1 = new Point(element.Left + element.Width, element.Top);
                    Point c1 = new Point(element.Left + element.Width, element.Top + element.Height);
                    Point d1 = new Point(element.Left, element.Top + element.Height);
                    Point point = AlignCanvas.MeasurePoint(a, a1, b1);
                    if (!double.IsNaN(point.X))
                    {
                        points.Add(point);
                    }
                    else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, b1, c1)).X))
                    {
                        points.Add(point);
                    }
                    else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, c1, d1)).X))
                    {
                        points.Add(point);
                    }
                    else if (!double.IsNaN((point = AlignCanvas.MeasurePoint(a, d1, a1)).X))
                    {
                        points.Add(point);
                    }
                }
            }

            AlignCanvas.DrawAlignPoints(points);
        }
Ejemplo n.º 5
0
 public void OnLineMoving(_Line source, Point a, Point b)
 {
     if (!DesginCanvas.IsAutoAlign)
     {
         return;
     }
     a.X += source.Left;
     a.Y += source.Top;
     b.X += source.Left;
     b.Y += source.Top;
     LineAddingMode(source, a, b);
 }
Ejemplo n.º 6
0
 public LineAdorner(_Line line)
     : base(line)
 {
     _line = line;
 }