public void setEndPoint(DrawablePoint p)
 {
     this.points[points.Count - 1] = p;
     scaleToParent();
     update();
     fireMove(this);
 }
 public void setStartPoint(DrawablePoint p)
 {
     this.points[0] = p;
     scaleToParent();
     update();
     fireMove(this);
 }
        //
        //setters

        public Line addPoint(DrawablePoint pnt)
        {
            this.points.Add(pnt);
            if (this.parent != null)
            {
                pnt.scaleToParent(this.parent);
                update();
                fireMove(this);
            }
            //
            return(this);
        }
        /// <summary>
        /// polar points will be calculated with respect to the last point,
        /// you can say polar movement
        /// </summary>
        public Line(Pen p, DrawablePoint startPoint, params PolarPoint[] points)
            : base(p)
        {
            DrawablePoint lastPoint = startPoint;

            this.points.Add(startPoint);

            foreach (PolarPoint item in points)
            {
                this.points.Add(add(item.toCartesian(), lastPoint));
            }
        }
        //public Line(Pen pen) : base(pen) { }


        DrawablePoint add(PointF a, DrawablePoint b)
        {
            return(new DrawablePoint(a.X + b.Vx, a.Y + b.Vy));
        }