Как сделать ширину штриха невосприимчивой к текущей матрице преобразования

В SVG (и Canvas, Quartz, Postscript,... )матрица преобразования влияет как на координаты пути, так и на ширину линии. Есть ли способ сделать настройку, чтобы ширина линии не влияла? То есть в следующем примере масштаб для X и Y разный, что превращает квадрат в прямоугольник, что нормально, но также делает линии шире с двух сторон.

  <g transform="rotate(30) scale(5,1) ">
      <rect x="10" y="10" width="20" height="20" 
            stroke="blue" fill="none" stroke-width="2"/>
  </g>

rectangle width scaled pen

Я понимаю, что во многих случаях это было бы полезно, но есть ли способ отказаться от этого? Я полагаю, что хотел бы иметь отдельное перо TM или иметь возможность настроить перо как эллипс, который CTM преобразует в круг, но я не вижу ничего подобного.

Не имея этого, я думаю, что должен не сообщать SVG о моем CTM и вместо этого самостоятельно преобразовывать координаты, что означает преобразование примитивов, таких как rect, в их эквиваленты path.

36
задан Calmarius 16 July 2017 в 12:08
поделиться