Я сейчас работаю с SVG и зашел в тупик.
У SVG есть линии, которые должны масштабироваться вместе с масштабированием (чтобы они оставались сбалансированными: 100% ширина 10px → 10% ширина 1px например)
Я масштабирую все значения stroke-widths
с помощью этого кода:
var svgPath = this._svgContainer.find('svg [class*="style"]');
for (var i = 0; i < svgPath.length; ++i) {
var newStrokeWidth = this._oldStrokeWidth[i] * (1 / (width / imgData.w));
$(svgPath[i]).css(
'stroke-width', newStrokeWidth
);
}
Где width
- новая ширина после увеличения, а imgData.w
- исходная немасштабированная ширина.
Проблема с этим, если я увеличу масштаб до далеких. Штрих с становится небольшим и приводит к субпиксельной визуализации. И предположительно черные линии становятся серыми.
Моя идея заключалась в том, чтобы обрезать значение в определенной точке, чтобы предотвратить его. Но, насколько я знаю, я также должен учитывать соотношение пикселей устройства, из-за разных экранов (рабочий стол, мобильный, 4K)
Было бы неплохо, если бы кто-то мог помочь мне с идеей, чтобы решить мою проблему