/// <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); }
/// <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); }