示例#1
0
        /// <summary>
        /// Resizes the spline to have a certain number of Control Points
        /// </summary>
        /// <param name="count">number of Control Points</param>
        protected void PrepareControlPoints(int count)
        {
            /*
             * Spline.Clear();
             * while (count-- > 0)
             *  Spline.Add();
             * Spline.Refresh();
             */
            int  delta = count - Spline.ControlPointCount;
            bool upd   = delta != 0;

            while (delta > 0)
            {
                Spline.Add();
                delta--;
            }

            while (delta < 0)
            {
                Spline.Delete(Spline.LastVisibleControlPoint);
                delta++;
            }
            // Revert to default settings
            for (int i = 0; i < Spline.ControlPoints.Count; i++)
            {
                Spline.ControlPoints[i].Reset();
                var mcg = Spline.ControlPoints[i].GetMetadata <MetaCGOptions>();
                if (mcg)
                {
                    mcg.Reset();
                }
            }

            if (upd)
            {
                Spline.SetDirtyAll();
                Spline.Refresh();
            }
        }