C # рисовать кривую и полигон с событиями мыши - PullRequest
1 голос
/ 11 декабря 2010

Я новичок в C #, так что будьте осторожны.

В C # я хочу рисовать кривые и многоугольники, как в Paint; где вы держите левую кнопку мыши, чтобы нарисовать. Можете ли вы дать совет или код, как это сделать?

Спасибо.

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

Вам нужно обрабатывать события мыши, перемещать и поднимать мышь, сохраняя при этом некоторые данные, которые затем рисуются в событии Paint любого элемента управления, в который вы рисуете.

Взгляните на эту статью CodeProject для хорошего примера того, что вам нужно сделать.

Для соединения точек с кривой вы должны обратиться к этой статье для рисования кривых Безье из набора точек. Вот еще один , который выполняет сплайн-интерполяцию .

1 голос
/ 11 декабря 2010

Для начала попробуйте просто навести курсор мыши с помощью Graphics.LineTo() - затем начните играть с событиями мыши вниз и вверх, затем перейдите оттуда. В области графики есть много интересного, и это должно быть весело!

Что касается массива:

List<Point> points=new List<Point>();

позже, при перемещении мыши:

points.Add(new Point(mouse.X,mouse.Y));

и намного позже, если вам нужен массив реальных точек

Point[] pa=points.ToArray();
0 голосов
/ 11 декабря 2010

Статья CodeProject, на которую ссылается Пол Сасик, является отличной отправной точкой. Для рисования изогнутых линий вы можете попробовать использовать Graphics.DrawBezier(...), который принимает массив точек в качестве параметра и отображает изогнутую линию через точки. Однако это может привести к некоторым сложностям, поскольку вам нужно решить, сколько последовательных точек использовать для каждого сегмента и как обрабатывать текущие перекрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...