Я более или менее борюсь с этим, когда когда-нибудь через какое-то время снова начинаю использовать canvas - вы работаете с «математическими» линиями, а не линиями на экране.
Как уже упоминалось, строка от (1,1) до (1,10) начинается между пикселями (0/0, 1/1) и заканчивается между (0/10, 1/11)
так что его 1 пиксель в ширину и 1 пиксель в высоту. но приятно немного светлее ...
Мое решение, если вы используете холст для рисования только "жестких целочисленных линий", например, для создания элемента управления используется transform(1,0,0,1,0.5,0.5)
(или transform(1,0,0,1,-0.5,-0.5)
зависит от того, хотите ли вы запустить его с 0 или 1)
(я использую преобразование, чтобы убедиться, что нет (a) или (d), что снова усложнит мне жизнь)
просто сдвиньте ноль на строке «между 0 и 1» (теперь вы знаете мой ник ...)
Это прекрасно работает во всех моих случаях, когда я рисую (или должен рисовать) "pixeled"