예제 #1
0
        /// <summary>
        /// Deserialization constructor
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        protected BezierHandle(SerializationInfo info, StreamingContext context) : base(info, context)
        {
            mTangent1 = info.GetValue("mTangent1", typeof(TangentHandle)) as TangentHandle;
            mTangent2 = info.GetValue("mTangent2", typeof(TangentHandle)) as TangentHandle;

            mTangent1.Cotangent = mTangent2;
            mTangent2.Cotangent = mTangent1;


            pen = new Pen(Color.OrangeRed);
        }
예제 #2
0
        /// <summary>
        /// Initializes the handle
        /// </summary>
        private void Init()
        {
            this.Rectangle = new RectangleF(CurrentPoint, new SizeF(6, 6));
            mTangent1      = new TangentHandle(this, new PointF(CurrentPoint.X - 40, CurrentPoint.Y + 40));
            mTangent2      = new TangentHandle(this, new PointF(CurrentPoint.X + 40, CurrentPoint.Y - 40));

            //this helps the symmetric behavior
            mTangent1.Cotangent = mTangent2;
            mTangent2.Cotangent = mTangent1;

            //mTangent1.Enabled = false;
            pen = new Pen(Color.OrangeRed);
        }
        /// <summary>
        /// Gets for the given sub-elemts of the Bezier curve an intermediate point
        /// </summary>
        /// <param name="percent">the percentage along the curve</param>
        /// <param name="handle1">the first handle of the segment</param>
        /// <param name="handle2">the second handle of the segment</param>
        /// <returns></returns>
        private PointF GetBezier(float percent, BezierHandle handle1, BezierHandle handle2)
        {
            TangentHandle tangent1 = null, tangent2 = null;

            if (handle1.HandleType == HandleTypes.Single)
            {
                if (handle1.Tangent1.Enabled)
                {
                    tangent1 = handle1.Tangent1;
                }
                else
                {
                    tangent1 = handle1.Tangent2;
                }
            }
            else
            {
                tangent1 = handle1.Tangent2;
            }
            if (handle2.HandleType == HandleTypes.Single)
            {
                if (handle2.Tangent1.Enabled)
                {
                    tangent2 = handle2.Tangent1;
                }
                else
                {
                    tangent2 = handle2.Tangent2;
                }
            }
            else
            {
                tangent2 = handle2.Tangent1;
            }
            return(GetBezier(percent, handle1.CurrentPoint, tangent1.CurrentPoint, tangent2.CurrentPoint, handle2.CurrentPoint));
        }
        private void Init()
        {
            mRectangle = new RectangleF(mCurrentPoint,new SizeF(6,6));
            mTangent1 = new TangentHandle(this, new PointF(mCurrentPoint.X-40,mCurrentPoint.Y+40));
            mTangent2 = new TangentHandle(this, new PointF(mCurrentPoint.X+40,mCurrentPoint.Y-40));

            //this helps the symmetric behavior
            mTangent1.Cotangent = mTangent2;
            mTangent2.Cotangent = mTangent1;

            //mTangent1.Enabled = false;
            pen = new Pen(Color.OrangeRed);
        }