Краткая справка: я работаю над веб-приложением для рисования, и одним из инструментов, которые я реализую, является карандаш толщиной 1 пиксель.Инструмент позволяет пользователю рисовать на холсте линии с псевдонимами размером 1 пиксель.
Чтобы определить, где пользователь рисует на холсте, отслеживаются координаты мыши.Если mouse1 удерживается нажатой, пиксель, над которым находится курсор, изменится.По сути, он работает так же, как карандашный инструмент в Photoshop.
ПРИМЕЧАНИЕ. Алгоритм Брезенхэма не будет работать в этой ситуации.Мои данные отправляются в режиме реального времени, поэтому я не рисую линию от P0 до P1, где расстояние между P0 и P1 много пикселей.В общем, P1 является соседом P0.
Проблема, с которой я столкнулся, заключается в том, что мои результирующие строки не имеют идеально чистого веса 1px.Вот пример:
Обратите внимание, что обе линии нарисованы от руки, поэтому есть некоторая разница.Интересно, что Photoshop может сделать намного более четкое представление линии, которую я рисую, в 1px.Причина, по которой моя линия выглядит более грязной, заключается в следующем:
При рисовании с помощью инструмента в моем приложении красные пиксели заполненыв. В Photoshop красные пиксели не заполнены. Это имеет смысл, потому что для перехода от данного пикселя, скажем, к его юго-восточному соседу, либо восточный, либо южный сосед, скорее всего, будет пропущен.Существует очень малая вероятность того, что курсор пройдет точно через угол к юго-восточному соседу, избегая рисования красного пикселя, но обычно этого не происходит.
Итак, вопрос, который у меня остался, заключается в том, как Photoshop может пропускать красные пиксели, которые появляются в моих строках.Единственное, о чем я мог думать, это ждать, пока два пикселя не будут поставлены в очередь, прежде чем рисовать любой из них, чтобы я знал, пропущен ли «угловой сосед».В этом случае я бы просто не рисовал первый из двух пикселей, потому что это было бы эквивалентно красному пикселю на моей диаграмме.Это рискует не нарисовать предполагаемый пиксель, если пользователь рисует пиксель, перемещает курсор на один пиксель на юг, а затем на один пиксель на восток.Оба пикселя должны быть нарисованы, но алгоритм скажет иначе.
Есть идеи?Как Photoshop может решить эту проблему?