Рисование / график не является непрерывным (задействованы события мыши) - PullRequest
0 голосов
/ 06 апреля 2011

У меня проблемы с проектом класса Java.Первый шаг состоит в рисовании рисунка, поэтому я подумал, что это не может быть сложно.И это не так, но есть одна вещь, которая действительно беспокоит меня.Сначала проверьте скриншот ниже:

Снимок экрана

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

Зона рисования - это JPanel.Существует набор точек, который используется для рисования контейнера при событиях мыши.Нажав добавить первую точку, перетащив остальные, освободил зону рисования.

Надеюсь, я был достаточно конкретен.Спасибо за ваше время!

edit : Забыли код.http://pastebin.com/RyXiGsvm

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Право StanislavL в том, что события mouseMove / mouseDrag не генерируются для каждого пикселя, на который вы наводите курсор мыши.Почему вы не хотите использовать линии?Если проблема в том, что результат уродлив и неровен, вы можете вместо этого использовать кубические сплайны.GeneralPath.curveTo предоставляет простой способ сделать это.Если правильное получение контрольных точек является проблемой, вы также можете использовать GeneralPath.quadTo;это квадратичное приближение, которое будет выглядеть не так хорошо, но вы можете легко передать последние три точки из mouseDrags.

1 голос
/ 06 апреля 2011

Полагаю, вы сохраняете точки мыши, полученные при обработке mouseDrag. Перетаскивание мыши происходит через некоторый промежуток времени, поэтому, если вы двигаете мышь относительно быстро, вы просто получаете очки. Для этого вы можете использовать drawLine (), передавая пары точек. Таким образом, у вас будут строки.

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