Example #1
0
 public override void Start(object sender)
 {
     if (sender is Ellipse)
     {
         Ellipse     pointShape = (Ellipse)sender;
         HandlePoint point      = CanvasHolder.GetHandlePointByShape(pointShape);
         if (point is AnchorPoint)
         {
             CanvasHolder.SelectHandlePoint(point);
             moveAnchor = true;
             ProgressTimer.Start();
         }
     }
     else if (sender is Shape)
     {
         Shape       shape         = (Shape)sender;
         ShapeHolder shapeHolder   = CanvasHolder.GetShapeHolderByShape(shape);
         AnchorPoint anchorPoint   = shapeHolder.AnchorPoint;
         Point       mousePosition = Mouse.GetPosition(CanvasHolder.Canvas);
         if (anchorPoint == null)
         {
             anchorPoint             = new AnchorPoint(mousePosition, shapeHolder);
             shapeHolder.AnchorPoint = anchorPoint;
             CanvasHolder.SelectHandlePoint(anchorPoint);
             moveAnchor = true;
             ProgressTimer.Start();
         }
         else
         {
             position   = mousePosition;
             moveAnchor = false;
             ProgressTimer.Start();
         }
     }
 }
        public override void ModifyByPoint(HandlePoint activeHandlePoint)
        {
            Rectangle rectangle = (Rectangle)Shape;
            bool      index     = activeHandlePoint == HandlePoints[1];

            if (!index)
            {
                Canvas.SetLeft(rectangle, HandlePoints[1].X);
                Canvas.SetTop(rectangle, HandlePoints[1].Y);
                if (activeHandlePoint.X - HandlePoints[1].X > 0)
                {
                    rectangle.Width = activeHandlePoint.X - HandlePoints[1].X;
                }
                if (activeHandlePoint.X - HandlePoints[1].Y > 0)
                {
                    rectangle.Height = activeHandlePoint.Y - HandlePoints[1].Y;
                }
            }
            else
            {
                Canvas.SetLeft(rectangle, activeHandlePoint.X);
                Canvas.SetTop(rectangle, activeHandlePoint.Y);
                if (HandlePoints[0].X - activeHandlePoint.X > 0)
                {
                    rectangle.Width = HandlePoints[0].X - activeHandlePoint.X;
                }
                if (HandlePoints[0].Y - activeHandlePoint.Y > 0)
                {
                    rectangle.Height = HandlePoints[0].Y - activeHandlePoint.Y;
                }
            }
        }
Example #3
0
        protected override void Progress()
        {
            HandlePoint activeHandlePoint = CanvasHolder.ActiveHandlePoint;
            Point       mousePosition     = Mouse.GetPosition(CanvasHolder.Canvas);

            activeHandlePoint.Move(mousePosition);
            activeHandlePoint.ModifyShape();
        }
 public void SelectHandlePoint(HandlePoint handlePoint)
 {
     if (ActiveHandlePoint != null)
     {
         ActiveHandlePoint.Unselect();
     }
     ActiveHandlePoint = handlePoint;
     ActiveHandlePoint.Select();
 }
Example #5
0
        private void Scale_OnClick(object sender, RoutedEventArgs e)
        {
            HandlePoint point = CanvasHolder.ActiveHandlePoint;

            if (point != null)
            {
                double ratio = Convert.ToDouble(tbRatio.Text);
                point.ShapeHolder.Scale(ratio);
            }
        }
Example #6
0
        public override void Start(object sender)
        {
            if (sender is Ellipse)
            {
                Ellipse     pointShape        = (Ellipse)sender;
                HandlePoint activeHandlePoint = CanvasHolder.GetHandlePointByShape(pointShape);
                CanvasHolder.SelectHandlePoint(activeHandlePoint);

                ProgressTimer.Start();
            }
        }
Example #7
0
        public override void CreateByPoint(HandlePoint activeHandlePoint)
        {
            Line line = new Line();

            line.Stroke          = Brushes.Black;
            line.StrokeThickness = CanvasHolder.CurrentStrokeThickness;
            HandlePoints[0]      = activeHandlePoint;
            HandlePoints[1]      = new HandlePoint(activeHandlePoint.Position, this);
            CanvasHolder.Canvas.Children.Add(line);
            Shape = line;
        }
        public override void CreateByPoint(HandlePoint activeHandlePoint)
        {
            Ellipse circle = new Ellipse();

            circle.Stroke          = Brushes.Black;
            circle.StrokeThickness = CanvasHolder.CurrentStrokeThickness;
            HandlePoints[0]        = activeHandlePoint;
            HandlePoints[1]        = new HandlePoint(activeHandlePoint.Position, this);
            CanvasHolder.Canvas.Children.Add(circle);
            Shape = circle;
        }
        private void Rotate_OnClick(object sender, RoutedEventArgs e)
        {
            HandlePoint point = CanvasHolder.ActiveHandlePoint;

            if (point != null)
            {
                double degrees = Convert.ToDouble(tbAngle.Text);
                double radians = Math.PI * degrees / 180.0;
                point.ShapeHolder.Rotate(radians);
            }
        }
        public override void CreateByPoint(HandlePoint activeHandlePoint)
        {
            Rectangle rectangle = new Rectangle();

            rectangle.Stroke          = Brushes.Black;
            rectangle.StrokeThickness = CanvasHolder.CurrentStrokeThickness;
            HandlePoints[0]           = activeHandlePoint;
            HandlePoints[1]           = new HandlePoint(activeHandlePoint.Position, this);
            CanvasHolder.Canvas.Children.Add(rectangle);
            Shape = rectangle;
        }
Example #11
0
 public override void FromString(string input)
 {
     string[] words = input.Split(null);
     for (int i = 0; i < words.Length; i += 2)
     {
         double      x           = Convert.ToDouble(words[i]);
         double      y           = Convert.ToDouble(words[i + 1]);
         Point       position    = new Point(x, y);
         HandlePoint handlePoint = new HandlePoint(position, this);
         CreateByPoint(handlePoint);
     }
     ModifyByPoint(null);
 }
        public override void ModifyByPoint(HandlePoint activeHandlePoint)
        {
            Ellipse circle = (Ellipse)Shape;
            bool    index  = activeHandlePoint == HandlePoints[1];

            if (!index)
            {
                double radius = Math.Sqrt(Math.Pow(activeHandlePoint.X - HandlePoints[1].X, 2) + Math.Pow(activeHandlePoint.Y - HandlePoints[1].Y, 2));
                Canvas.SetLeft(circle, HandlePoints[1].X - radius);
                Canvas.SetTop(circle, HandlePoints[1].Y - radius);
                circle.Width  = radius * 2;
                circle.Height = circle.Width;
            }
        }
        public override void ModifyByPoint(HandlePoint activeHandlePoint)
        {
            int    n = HandlePoints.Count - 1, k;
            double b, bp, tp = 0, t;
            Point  point, characteristic;

            for (int i = 0; i < T; i++)
            {
                point   = new Point();
                point.X = 0;
                point.Y = 0;

                t = (double)i / T;
                b = Math.Pow(1 - t, n);

                tp = 1;
                bp = b;
                for (int j = 0; j <= n; j++)
                {
                    characteristic = HandlePoints[j].Position;
                    k        = j == 0 || j == n ? 1 : n;
                    point.X += (k * bp * tp * characteristic.X);
                    point.Y += (k * bp * tp * characteristic.Y);
                    bp      /= (1 - t);
                    tp      *= t;
                }
                CurvePoints[i] = point;
            }

            point          = new Point();
            characteristic = HandlePoints[n].Position;
            point.X        = characteristic.X;
            point.Y        = characteristic.Y;
            CurvePoints[T] = point;

            for (int i = 0; i < T; i++)
            {
                Lines[i].X1 = CurvePoints[i].X;
                Lines[i].Y1 = CurvePoints[i].Y;

                Lines[i].X2 = CurvePoints[i + 1].X;
                Lines[i].Y2 = CurvePoints[i + 1].Y;

                if (Lines[i].Visibility == Visibility.Hidden)
                {
                    Lines[i].Visibility = Visibility.Visible;
                }
            }
        }
        public override void TranslateByPoint(HandlePoint activeHandlePoint)
        {
            Rectangle rectangle        = (Rectangle)Shape;
            bool      index            = activeHandlePoint == HandlePoints[1];
            Point     translateVector  = new Point();
            Point     absolutePosition = new Point();
            Point     previousPosition = activeHandlePoint.PreviousPosition;

            if (!index)
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[1].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[1].Y + translateVector.Y / 3;

                HandlePoints[1].Move(absolutePosition);

                Canvas.SetLeft(rectangle, HandlePoints[1].X);
                Canvas.SetTop(rectangle, HandlePoints[1].Y);
                if (activeHandlePoint.X - HandlePoints[1].X > 0)
                {
                    rectangle.Width = activeHandlePoint.X - HandlePoints[1].X;
                }
                if (activeHandlePoint.X - HandlePoints[1].Y > 0)
                {
                    rectangle.Height = activeHandlePoint.Y - HandlePoints[1].Y;
                }
            }
            else
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[0].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[0].Y + translateVector.Y / 3;

                HandlePoints[0].Move(absolutePosition);

                Canvas.SetLeft(rectangle, activeHandlePoint.X);
                Canvas.SetTop(rectangle, activeHandlePoint.Y);
                if (HandlePoints[0].X - activeHandlePoint.X > 0)
                {
                    rectangle.Width = HandlePoints[0].X - activeHandlePoint.X;
                }
                if (HandlePoints[0].Y - activeHandlePoint.Y > 0)
                {
                    rectangle.Height = HandlePoints[0].Y - activeHandlePoint.Y;
                }
            }
        }
Example #15
0
        public override void Start(object sender)
        {
            if (sender is Canvas)
            {
                Canvas canvas        = (Canvas)sender;
                Point  mousePosition = Mouse.GetPosition(canvas);

                ShapeHolder newShapeHolder = ShapeHolderFactory.CreateShapeHolder(CanvasHolder);
                HandlePoint newHandlePoint = new HandlePoint(mousePosition, newShapeHolder);
                newShapeHolder.CreateByPoint(newHandlePoint);
                CanvasHolder.SelectHandlePoint(newHandlePoint);

                ProgressTimer.Start();
            }
        }
Example #16
0
        protected override void Progress()
        {
            HandlePoint activeHandlePoint = CanvasHolder.ActiveHandlePoint;
            Point       mousePosition     = Mouse.GetPosition(CanvasHolder.Canvas);

            if (moveAnchor)
            {
                activeHandlePoint.Move(mousePosition);
            }
            else
            {
                double      angle       = getAngle(activeHandlePoint.Position, position, mousePosition);
                ShapeHolder shapeHolder = activeHandlePoint.ShapeHolder;
                shapeHolder.Rotate(angle);
                position = mousePosition;
            }
        }
Example #17
0
        public override void ModifyByPoint(HandlePoint activeHandlePoint)
        {
            PointCollection points = new PointCollection();

            foreach (HandlePoint handlePoint in HandlePoints)
            {
                points.Add(handlePoint.Position);
            }

            Polygon polygon = Shape as Polygon;

            polygon.Points = points;

            if (polygon.Visibility == Visibility.Hidden)
            {
                polygon.Visibility = Visibility.Visible;
            }
        }
Example #18
0
        private void Draw_OnClick(object sender, RoutedEventArgs e)
        {
            Point position1 = new Point();
            Point position2 = new Point();

            position1.X = Convert.ToDouble(tbPositionX1.Text);
            position1.Y = Convert.ToDouble(tbPositionY1.Text);
            position2.X = Convert.ToDouble(tbPositionX2.Text);
            position2.Y = Convert.ToDouble(tbPositionY2.Text);

            ShapeHolder newShapeHolder = ShapeHolderFactory.CreateShapeHolder(CanvasHolder);
            HandlePoint newHandlePoint = new HandlePoint(position1, newShapeHolder);

            newShapeHolder.CreateByPoint(newHandlePoint);
            CanvasHolder.SelectHandlePoint(newHandlePoint);

            newHandlePoint.Move(position2);
            newHandlePoint.ModifyShape();
        }
Example #19
0
        protected override void Progress()
        {
            HandlePoint activeHandlePoint = CanvasHolder.ActiveHandlePoint;
            Point       mousePosition     = Mouse.GetPosition(CanvasHolder.Canvas);

            if (moveAnchor)
            {
                activeHandlePoint.Move(mousePosition);
            }
            else
            {
                double      distance    = getDistance(activeHandlePoint.Position, mousePosition);
                double      ratio       = distance / oldDistance;
                ShapeHolder shapeHolder = activeHandlePoint.ShapeHolder;
                shapeHolder.Scale(ratio);
                position    = mousePosition;
                oldDistance = distance;
            }
        }
Example #20
0
        public override void ModifyByPoint(HandlePoint activeHandlePoint)
        {
            Line line  = (Line)Shape;
            bool index = activeHandlePoint == HandlePoints[1];

            if (!index)
            {
                line.X1 = activeHandlePoint.X;
                line.Y1 = activeHandlePoint.Y;
                line.X2 = HandlePoints[1].X;
                line.Y2 = HandlePoints[1].Y;
            }
            else
            {
                line.X1 = HandlePoints[0].X;
                line.Y1 = HandlePoints[0].Y;
                line.X2 = activeHandlePoint.X;
                line.Y2 = activeHandlePoint.Y;
            }
        }
Example #21
0
        public override void Start(object sender)
        {
            if (sender is Canvas)
            {
                Canvas      canvas        = (Canvas)sender;
                Point       mousePosition = Mouse.GetPosition(canvas);
                ShapeHolder shapeHolder   = CanvasHolder.ActiveShapeHolder;

                if (shapeHolder == null)
                {
                    shapeHolder = ShapeHolderFactory.CreateShapeHolder(CanvasHolder);
                    CanvasHolder.ActiveShapeHolder = shapeHolder;
                }
                HandlePoint newHandlePoint = new HandlePoint(mousePosition, shapeHolder);
                shapeHolder.CreateByPoint(newHandlePoint);

                if (shapeHolder.HandlePoints.Count > 2)
                {
                    shapeHolder.ModifyByPoint(newHandlePoint);
                }
            }
        }
        public override void TranslateByPoint(HandlePoint activeHandlePoint)
        {
            Ellipse circle           = (Ellipse)Shape;
            bool    index            = activeHandlePoint == HandlePoints[1];
            Point   translateVector  = new Point();
            Point   absolutePosition = new Point();
            Point   previousPosition = activeHandlePoint.PreviousPosition;

            if (!index)
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[1].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[1].Y + translateVector.Y / 3;

                HandlePoints[1].Move(absolutePosition);

                double radius = Math.Sqrt(Math.Pow(activeHandlePoint.X - HandlePoints[1].X, 2) + Math.Pow(activeHandlePoint.Y - HandlePoints[1].Y, 2));
                Canvas.SetLeft(circle, HandlePoints[1].X - radius);
                Canvas.SetTop(circle, HandlePoints[1].Y - radius);
                circle.Width  = radius * 2;
                circle.Height = circle.Width;
            }
            else
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[0].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[0].Y + translateVector.Y / 3;

                HandlePoints[0].Move(absolutePosition);

                double radius = Math.Sqrt(Math.Pow(HandlePoints[0].X - activeHandlePoint.X, 2) + Math.Pow(HandlePoints[0].Y - activeHandlePoint.Y, 2));
                Canvas.SetLeft(circle, activeHandlePoint.X - radius);
                Canvas.SetTop(circle, activeHandlePoint.Y - radius);
                circle.Width  = radius * 2;
                circle.Height = circle.Width;
            }
        }
        private void AddPoint_OnClick(object sender, RoutedEventArgs e)
        {
            Point position = new Point();

            position.X = Convert.ToDouble(tbPositionX.Text);
            position.Y = Convert.ToDouble(tbPositionY.Text);

            ShapeHolder shapeHolder = CanvasHolder.ActiveShapeHolder;

            if (shapeHolder == null)
            {
                shapeHolder = ShapeHolderFactory.CreateShapeHolder(CanvasHolder);
                CanvasHolder.ActiveShapeHolder = shapeHolder;
            }
            HandlePoint newHandlePoint = new HandlePoint(position, shapeHolder);

            shapeHolder.CreateByPoint(newHandlePoint);

            if (shapeHolder.HandlePoints.Count > 2)
            {
                shapeHolder.ModifyByPoint(newHandlePoint);
            }
        }
Example #24
0
        public override void TranslateByPoint(HandlePoint activeHandlePoint)
        {
            Line  line             = (Line)Shape;
            bool  index            = activeHandlePoint == HandlePoints[1];
            Point translateVector  = new Point();
            Point absolutePosition = new Point();
            Point previousPosition = activeHandlePoint.PreviousPosition;

            if (!index)
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[1].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[1].Y + translateVector.Y / 3;

                HandlePoints[1].Move(absolutePosition);

                line.X1 = activeHandlePoint.X;
                line.Y1 = activeHandlePoint.Y;
                line.X2 = HandlePoints[1].X;
                line.Y2 = HandlePoints[1].Y;
            }
            else
            {
                translateVector.X  = activeHandlePoint.X - previousPosition.X;
                translateVector.Y  = activeHandlePoint.Y - previousPosition.Y;
                absolutePosition.X = HandlePoints[0].X + translateVector.X / 3;
                absolutePosition.Y = HandlePoints[0].Y + translateVector.Y / 3;

                HandlePoints[0].Move(absolutePosition);

                line.X1 = HandlePoints[0].X;
                line.Y1 = HandlePoints[0].Y;
                line.X2 = activeHandlePoint.X;
                line.Y2 = activeHandlePoint.Y;
            }
        }
Example #25
0
 public abstract void TranslateByPoint(HandlePoint activeHandlePoint);
 public void AddHandlePoint(HandlePoint handlePoint)
 {
     HandlePoints.Add(handlePoint);
 }
Example #27
0
 public abstract void CreateByPoint(HandlePoint activeHandlePoint);
Example #28
0
 public abstract void ModifyByPoint(HandlePoint activeHandlePoint);
 public override void TranslateByPoint(HandlePoint activeHandlePoint)
 {
 }
 public override void CreateByPoint(HandlePoint activeHandlePoint)
 {
     HandlePoints.Add(activeHandlePoint);
 }