Esempio n. 1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            // Create graphics
            g_demo  = panel1.CreateGraphics();
            g_curve = panel2.CreateGraphics();

            // Bezier points
            points[0] = new Point(10, 221);
            points[1] = new Point(40, 31);
            points[2] = new Point(310, 201);
            points[3] = new Point(340, 11);

            // Ease points
            easePoints[0] = new Point(10, 221);
            easePoints[1] = new Point(40, 31);
            easePoints[2] = new Point(310, 201);
            easePoints[3] = new Point(340, 11);

            // Route bezier initialization
            bezierRoute     = new BezierRoute(points, 2000, 1, UniformBezierRouteCallBack);
            bezierRoute.Tag = 1;

            // Ease bezier demo points parameters
            orignPoints[0] = new Point(0, panel1.Height / 2);
            orignPoints[1] = new Point(-8, panel1.Height / 2);
            orignPoints[2] = new Point(-16, panel1.Height / 2);
            distance       = panel1.Width;
            pE[0]          = new Point(orignPoints[0].X, orignPoints[0].Y);
            pE[1]          = new Point(orignPoints[1].X, orignPoints[1].Y);
            pE[2]          = new Point(orignPoints[2].X, orignPoints[2].Y);
            brush[0]       = new SolidBrush(Color.White);
            brush[1]       = new SolidBrush(Color.White);
            brush[2]       = new SolidBrush(Color.White);
            bitmap         = new Bitmap(panel1.Width, panel1.Height);
            g_bitmap       = Graphics.FromImage(bitmap);

            // Ease bezier demo points initialization
            bezierEase[0]     = new BezierEase(easePoints, 2000, 1, UniformBezierEaseDemoCallBack);
            bezierEase[0].Tag = 0;
            bezierEase[1]     = new BezierEase(easePoints, 2000, 1, UniformBezierEaseDemoCallBack);
            bezierEase[1].Tag = 1;
            bezierEase[2]     = new BezierEase(easePoints, 2000, 1, UniformBezierEaseDemoCallBack);
            bezierEase[2].Tag = 2;
        }
Esempio n. 2
0
        private void UniformBezierEaseDemoCallBack(BezierEase bezierEase, double realRate, BezierEase.BezierStatus status)
        {
            // Draw demo panel
            if (status == BezierEase.BezierStatus.Finished)
            {
                realRate = 1;
            }
            switch (status)
            {
            case BezierEase.BezierStatus.None:
                break;

            case BezierEase.BezierStatus.Motioning:
                lock (this)
                {
                    pE[bezierEase.Tag].X = (int)(orignPoints[bezierEase.Tag].X + distance * realRate);
                }
                break;

            case BezierEase.BezierStatus.Finished:
                DrawBezierCurve();
                curvePointI = 0;
                this.bezierEase[bezierEase.Tag].Start = true;
                Console.WriteLine("Finished");
                break;

            default:
                break;
            }

            // Update curve panel
            if (0 == ++curvePointI % curvePointInterval)
            {
                UpdateCurvePanel(bezierEase.RealPoint);
            }
        }