Рисование зигзагов на Java - PullRequest
       22

Рисование зигзагов на Java

1 голос
/ 07 октября 2011

У меня есть дизайн-проект, и я должен рисовать зигзаги на Java с помощью мыши. Прежде всего, я использую MouseListener, а в методе mouseClicked я собираю все точки, которые нажимает пользователь:

 public void mouseClicked(MouseEvent e){
    if(isAbleToDraw){
    corners[points]=e.getPoint();
        points++;
        repaint();
    }
 }

Здесь я использую логическое «isAbleToDraw», чтобы проверить, нажал ли пользователь кнопки «рисовать» или «остановить рисование». А потом я рисую зигзаги так:

 super.paintComponent(graph);
 Graphics2D g = (Graphics2D) graph;
 g.drawLine(corners[i].x, corners[i].y, corners[i+1].x, corners[i+1].y);

Наконец, проблема в том, что когда я нажимаю кнопку «Остановить рисование» после рисования зигзага, а затем, после повторного нажатия кнопки «рисовать», он продолжает рисовать линии от последней оставшейся точки. Другими словами, я не могу нарисовать 2 разных зигзага.

Есть идеи, как решить проблему?

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Если вы хотите, чтобы пользователь мог рисовать более одного зигзага и видеть их обоих на экране, тогда вы можете использовать Collection точечных массивов.Каждый раз, когда пользователь нажимает кнопку «рисовать», вы добавляете новый массив в коллекцию и делаете этот новый массив массивом active .В вашем mouseClicked вы можете добавить точки, которые пользователь щелкает, к массиву активных точек, и когда вы рисуете компонент, вместо того, чтобы просто рисовать один зигзаг, выполняйте итерацию по коллекции массивов и рисуйте их все.

1 голос
/ 07 октября 2011

Пахнет домашней работой.

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

...