private void CanvasDrawSegment(Point MouseLocate) { if (IsStartPointSegment) { SegmentStartPoint = MouseLocate; IsStartPointSegment = false; } else { SegmentEndPoint = MouseLocate; IsStartPointSegment = true; CanvasDrawLine(SegmentStartPoint, SegmentEndPoint, SegmentColor); if (CurrentCutter.IsConvex()) { Segment Result = CurrentCutter.CutSegment(SegmentStartPoint, SegmentEndPoint); CanvasDrawLine(Result.Start, Result.End, ResultColor); } else { MessageBox.Show("Отсекатель должен быть выпуклым", "Ошибка", MessageBoxButtons.OK); } } }
// Отсечение private void buttonCut_Click(object sender, EventArgs e) { cutter.Finish(); g.DrawLine(pen_cutter, cutter.GetVertex(0), cutter.GetVertex(-1)); if (!cutter.IsConvex()) { MessageBox.Show("Многоугольник не выпуклый.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Segment tmp; for (int i = 0; i < lines.Count(); i++) { tmp = cutter.CutCyrusBeck(lines[i]); g.DrawLine(pen_highlight, tmp.start, tmp.end); canvasBase.Refresh(); } canvasBase.Refresh(); }