Bezier (Mouse Defines Control Points) : Curve « 2D Graphics « C# / C Sharp






Bezier (Mouse Defines Control Points)

 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class Bezier: Form
{
     protected Point[] apt = new Point[4];
   
     public static void Main()
     {
          Application.Run(new Bezier());
     }
     public Bezier()
     {
          ResizeRedraw = true;
   
          OnResize(EventArgs.Empty);
     }
     protected override void OnResize(EventArgs ea)
     {
          base.OnResize(ea);
   
          int cx = ClientSize.Width;
          int cy = ClientSize.Height;
   
          apt[0] = new Point(    cx / 4,     cy / 2);
          apt[1] = new Point(    cx / 2,     cy / 4);
          apt[2] = new Point(    cx / 2, 3 * cy / 4);
          apt[3] = new Point(3 * cx / 4,     cy / 2);
     }
     protected override void OnMouseDown(MouseEventArgs mea)
     {
          Point pt;
   
          if (mea.Button == MouseButtons.Left)
               pt = apt[1];
   
          else if (mea.Button == MouseButtons.Right)
               pt = apt[2];
   
          else
               return;
   
          Cursor.Position = PointToScreen(pt);
     }
     protected override void OnMouseMove(MouseEventArgs mea)
     {
          if (mea.Button == MouseButtons.Left)
          {
               apt[1] = new Point(mea.X, mea.Y);
               Invalidate();
          }
          else if (mea.Button == MouseButtons.Right)
          {
               apt[2] = new Point(mea.X, mea.Y);
               Invalidate();
          }
     }
     protected override void OnPaint(PaintEventArgs pea)
     {
          Graphics grfx = pea.Graphics;
   
          grfx.DrawBeziers(new Pen(ForeColor), apt);
   
          Pen pen = new Pen(Color.FromArgb(0x80, ForeColor));
   
          grfx.DrawLine(pen, apt[0], apt[1]);
          grfx.DrawLine(pen, apt[2], apt[3]);
     }
}

 








Related examples in the same category

1.Sine Curve
2.Ellipse with DrawLines
3.Spiral
4.Draw closed curveDraw closed curve
5.Click on the form to draw curveClick on the form to draw curve