public static BezierCurve FromEllipse(Point center, Size radius)
        {
            var pt1 = new Point(0, radius.Height); // top
            var pt2 = new Point(radius.Width, 0); // right
            var pt3 = new Point(0, -radius.Height); // bottom
            var pt4 = new Point(-radius.Width, 0); // left

            double dx = radius.Width * 4.0 * (System.Math.Sqrt(2) - 1) / 3;
            double dy = radius.Height * 4.0 * (System.Math.Sqrt(2) - 1) / 3;

            var curve_control_points = new []
                                      {
                                          pt1,
                                          pt1.Add(dx, 0),
                                          pt2.Add(0, dy),
                                          pt2,
                                          pt2.Add(0, -dy),
                                          pt3.Add(dx, 0),
                                          pt3,
                                          pt3.Add(-dx, 0),
                                          pt4.Add(0, -dy),
                                          pt4,
                                          pt4.Add(0, dy),
                                          pt1.Add(-dx, 0),
                                          pt1
                                      }
                .Select(p => p + center).ToArray();
            var curve_Degree = 3;
            
            var curve = new BezierCurve(curve_control_points, curve_Degree);
            return curve;
        }
        public IVisio.Shape DrawOval(Point center, double radius)
        {
            var A = center.Add(-radius, -radius);
            var B = center.Add(radius, radius);
            var rect = new Rectangle(A, B);

            return this.DrawOval(rect);
        }