Я использую SVG.js и пытаюсь сделать некоторые манипуляции с SVG.Ранее я работал с canvas, но был очень разочарован качеством изображений, которые он генерировал, поэтому я решил использовать чистый SVG.
Мне удалось изменить все на чистый SVG-подход, все, кроме одноговещь: вращение.
Я не могу заставить его работать.Я хотел бы использовать то, что предлагает библиотека SVG.js, но это не сработало.Я также попытался поиграться с элементами внутри, но также безуспешно.Лучшая ссылка, которую я нашел до этого момента, была эта , но хотя ему удается вращать изображения по отдельности, она не показывает, как вращать все вместе (как в моем случае)
Что я хочу
Я хочу иметь возможность вращать изображение SVG, которое я создал в Inkscape (довольно просто)
Проблема
Нет ротации вообще, через несколько методов и мнений в Интернете.
То, что я пробовал
- с использованием преобразования Атрибут с rotate (45)
- с использованием встроенного метода SVG.js
- , читающий о том, как нельзя применить вращение к тегу
- чтение о том, как вращение SVG отличается от CSS относительно его системы координат (например, эта ссылка из css-tricks )
Пример проблемы
Здесь у меня есть простой SVG-плеер, который я помещаю в переменную JS.Изображение создано и перемещено в координаты = (50, 50).Наконец я пытаюсь повернуть его на 45 градусов.(Что не помогает)
const player = '<svg width="11.214mm" height="6.3195mm" version="1.1" viewBox="0 0 11.214 6.3195" xmlns="http://www.w3.org/2000/svg">>\n' +
' <g transform="translate(-172.04 62.213)">\n' +
' <g transform="matrix(.429 0 0 .429 160.68 -80.101)">\n' +
' <g stroke="#000">\n' +
' <path d="m39.592 42.246c-4.5716 0.02368-12.788-1.0453-12.77 6.7945 0.01784 7.8398 12.788 6.8319 12.788 6.8319s12.667 1.041 12.681-6.9252-8.1273-6.7249-12.699-6.7012z" fill="#ff2a2a" stroke-width=".20436px"/>\n' +
' <circle cx="39.556" cy="49.061" r="7" fill="#ffb380" stroke-width=".26458"/>\n' +
' </g>\n' +
' </g>\n' +
' </g>\n' +
'</svg>';
if (SVG.supported) {
const drawArea = SVG('svgDrawArea').size(300, 300);
const group = drawArea.nested();
group.svg(player);
group.move(50, 50);
group.transform({ rotation: 45 });
} else {
alert('SVG not supported')
}
#svgDrawArea{
/* background-color: red; */
height: 300px;
width:300px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.4/svg.min.js"></script>
<div id="svgDrawArea"></div>
Я был бы счастлив, если бы кто-то мог объяснить, почему вращение не работает, или указать мне куда-нибудь, где я могу уяснить себе, почему!