Как сглаживать мазки, нарисованные на холсте, без использования clearRect - PullRequest
0 голосов
/ 05 июня 2019

Я работаю над приложением для рисования как личный проект (в настоящее время живу по http://draw.ist/), и я хотел бы, чтобы нарисованные штрихи были сглажены по краям, но, похоже, единственный способ добиться этого - использовать clearRect Однако clearRect также очищает холст каждый раз, когда я начинаю новый путь, и я хотел бы предотвратить это, чтобы холст фактически накапливал мазки.

Я видел материал о создании вторичного холста для сохранения штрихов или чего-то такого, чтобы очистка не стирала их (по крайней мере, я думаю, что это работает примерно так), однако этот метод потребовал бы много дополнительного кода, который я хотел бы избежать. Совсем недавно я пытался сохранить холст как imageURL при наведении мыши, а затем переставлять его с drawImage сразу после каждого clearRect, и это, похоже, неплохо работает, но у него есть несколько странных взаимодействий с моими инструментами ластика и прямых линий, а также как некоторые мерцают каждый раз, когда он загружается в сохраненное изображение холста.

Здесь не обязательно какой-то конкретный фрагмент соответствующего кода, но для справки весь сайт можно найти по адресу http://draw.ist/ (Управление: удерживайте клавишу shift для рисования прямых линий, удерживайте клавишу пробела для стирания, прокрутите колесико мыши до изменить размер кисти)

Я бы хотел, чтобы все нарисованные линии были плавными и имели сглаживание, но без использования метода «вторичный холст как память», ЕСЛИ ВОЗМОЖНО. Я думаю, что и здесь мне может помочь понимание того, почему именно clearRect необходим для применения сглаживания к мазкам на холсте и как он работает именно с точки зрения непрофессионала. Я очень ценю любую помощь по этому вопросу, действительно ли она полезна или нет!

...