示例#1
0
        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);
                }
            }
        }
示例#2
0
        // Отсечение
        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();
        }