Отличный вопрос! Автор спецификации (и я) считаю, что ответ таков:
- Это логично и так и должно быть;
Давайте рассмотрим причины этого.
Вы не рисуете отдельные линии, когда рисуете красный путь. Вы рисуете весь путь, и весь путь рисуется сразу и обводится одновременно, и цвет пути не может «перекрываться». Это преднамеренно определено спецификацией. Это читает:
Поскольку все подконтуры обведены как один, перекрывающиеся части контуров в операции с одним обводом обрабатываются так, как если бы их объединение было тем, что было нарисовано.
Если вы хотите получить эффект наложения, вы можете просто использовать несколько путей, как вы делаете, добавляя зеленую линию. Таким образом, вы можете легко сделать это по-другому, когда это необходимо.
Вы должны считать эту функцию хорошей вещью: если бы спецификация Canvas требовала, чтобы каждый подконтур пути вызывал дополнительное наложение, тогда углы каждого пути (где каждая линия соединяется) выглядели бы ужасно! (см. красные соединения здесь для примера того, как будет выглядеть каждый угол)
Поскольку перекрытие путей на крестах также означает, что они будут перекрываться в каждом углу, спецификация решает использовать только объединенный путь при обводке, что сохраняет нормально выглядящие углы как ожидаемое значение по умолчанию (я думаю, что большинство людей ожидает, что они будут смотреть как они делают, а не смотреть как я показал). Если бы линии накладывались на пересечения, а не на каждый угол, это не было бы последовательным правилом, что значительно усложняло бы изучение и работу.
Итак, рассуждение понятно, надеюсь. Спецификация должна дать нам 3 вещи, обычно в следующем порядке: наиболее распространенный ожидаемый результат (углы выглядят так, как они есть), согласованность (если бы мы наложили на пересечения линий, мы также сделали бы это на углах, поэтому мы не должны t сделать это), и легкость понимания.
Хорошая спецификация всегда непротиворечива. Если что-то непротиворечиво, то этому легче научиться, что облегчает понимание, когда вы знаете, почему что-то сделано именно так.
person
Simon Sarris
schedule
27.09.2011