private void lineToolStripMenuItem_Click(object sender, EventArgs e) { curves[choosencurve].accept(this); if (curves[choosencurve] is Bezier) //!!! { special_points.Remove(somePoints[1]); special_points.Remove(somePoints[2]); curves[choosencurve] = new Line(somePoints[0], somePoints[3]); } CurveMenuStrip.Close(); somePoints = null; choosencurve = -1; Refresh(); }
private void bezierToolStripMenuItem_Click(object sender, EventArgs e) { double x, y; curves[choosencurve].accept(this); curves[choosencurve].getPoint(0.3, out x, out y); //special_points.Insert(curves.IndexOf(curves[choosencurve]),new Geometry.Point(x, y)); special_points.Add(new Geometry.Point(x, y)); curves[choosencurve].getPoint(0.6, out x, out y); //special_points.Insert(curves.IndexOf(curves[choosencurve])+1, new Geometry.Point(x, y)); special_points.Add(new Geometry.Point(x, y)); curves[choosencurve] = new Bezier(somePoints[0], special_points[special_points.Count - 2], special_points[special_points.Count - 1], somePoints[1]); CurveMenuStrip.Close(); somePoints = null; choosencurve = -1; Refresh(); }
// Event section private void Form1_MouseClick(object sender, MouseEventArgs e) { choosencurve = -1; if (e.Button == MouseButtons.Left) { if (IsContain(e) == -1) { countour_points.Add(new Geometry.Point(e.X, e.Y)); if (countour_points.Count == 2) { curves.Add(new Line(countour_points[0], countour_points[1])); curves.Add(new Line(countour_points[1], countour_points[0])); } if (countour_points.Count >= 3) { //curves.RemoveAt(curves.Count - 1); curves[curves.Count - 1].accept(this); if (somePoints.Length == 2) { curves.RemoveAt(curves.Count - 1); curves.Add(new Line(somePoints[0], countour_points[countour_points.Count - 1])); curves.Add(new Line(countour_points[countour_points.Count - 1], countour_points[0])); } if (somePoints.Length == 4) { curves.RemoveAt(curves.Count - 1); curves.Add(new Bezier(somePoints[0], somePoints[1], somePoints[2], countour_points[countour_points.Count - 1])); curves.Add(new Line(countour_points[countour_points.Count - 1], countour_points[0])); } } } } if (e.Button == MouseButtons.Right) { ICurve choose = curveAreChoosen(e); if (choose != null) { choosencurve = curves.IndexOf(choose); CurveMenuStrip.Show(e.X + 50, e.Y + 50); } } Refresh(); }