Я пытаюсь изучить использование Snap.SVG. Создавая новую матрицу Snap, я получаю неожиданные результаты с помощью метода matrix.scale(). Использование el.transform («s ...») будет работать, как описано в документах Snap. Здесь единственный используемый код сценария:Snap.Matrix(). Scale (...) не работает должным образом, как описано в Snap docs.
var s = Snap(#svgout);
var box = s.rect(100,70, 100,60).attr({opacity: 0.3});
var box2 = box.clone().attr({fill: "#0f0", opacity: 0.5});
var myMatrix = new Snap.matrix();
myMatrix.scale(0.5);
box2.transform(myMatrix); // isn't using the center of box2
С myMatrix.scale (0.5,150,100) координаты центра Box2 не масштабируется. Мне нужно использовать myMatrix.scale (0,5,0,5,150,100) с горизонтальными и вертикальными масштабными коэффициентами и координатами центра элементов для ожидаемого результата.
Показанные результаты одинаковы в Firefox, Opera и Chrome. Я использую новейшую библиотеку Snap.Svg, а с предыдущим - тот же результат.
Я надеюсь получить некоторую помощь, С уважением, Д. Mietke
комплементарной ответ Яна У меня есть элемент BOX2 и myMatrix для scaleing элемента. Документы щелчковых сказать мне в
Matrix.scale(x,[y],[cx],[cy]);
, что параметры в [] являются необязательными и единственным применение х масштабируется по горизонтали и вертикали с тем же коэффициентом вокруг центра.
box2.transform("s0.5"); // works fine
box2.transform("s0.5,150,100"); // same result (150,100) is the centre
в первой строке преобразование Methode («...») не знает о середине Box2 так, как myMatrix. Во второй строке строка преобразования работает с одним масштабным фактором для horz. и vert. но в myMatrix я должен написать
myMatrix.scale(0.5,0.5,150,100); // both scale factors for one
применяется к Box2 и получили матрицу с
var m = box2.transform().localMatrix; // matrix(0.5,0,0,0.5,75,50)
myMatrix.scale(0.5,150,100); // doesn't work
применяется к Box2 вар м покажет матрицу (1,0,0,1,0,0)
myMatrix.scale(0.5); // doesn't use the centre like the transform("...")
применяется к BOX2 вар м покажет матрицу (0.5,0,0,0.5,0,0)
несколько дней назад все работало нормально (да!) с тот же результат с использованием box2.transform ("s0.5"); или box2.transform (myMatrix); с предопределенной матрицей, как в приведенных выше примерах. Два дня спустя и до сих пор результаты неожиданны. Я не понимаю, что я неправильно понимаю в использовании myMatrix.
С наилучшими пожеланиями, Д. Mietke
Извините, но проблему usolved. Я продолжил свои наблюдения. Пожалуйста, вы можете взглянуть на него? –
Вы обновили до Snap 0.5, так как там была ошибка, которая могла повлиять на какую-то работу, если так, я бы обновил до 0,51 или вернул обратно. Я думаю, что эта строка неверна в документах «По умолчанию cx, cy - средняя точка элемента». так как матрица не знает, к какому элементу относится. Как упомянуто выше, не используйте 3-мерную версию Matrix.scale, используйте версию с 4 параметрами. Я бы поставил минимальный тест, выделив любую ошибку на jsfiddle. – Ian
Фактически у меня есть Snap.SVG 0.5.1, а параметры y, cx, cy показаны с [] как необязательные, но не так Matrix.rotate (a, x, y) с x, y как центр. Я пытаюсь изучить SnapSVG и был смущен и не мог найти логического объяснения. Большое спасибо за вашу помощь. –