Raphael Papier-zoom-animation

Ich habe einige hack, um zu vergrößern raphael-Papier, als setviewbox war nicht für mich arbeiten, hier ist die Funktion, die ich schrieb:

function setCTM(element, matrix) {
    var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";

    element.setAttribute("transform", s);
}

Raphael.fn.zoomAndMove = function(coordx,coordy,zoom) {

    var svg = document.getElementsByTagName("svg")[0];

    var z = zoom;

    var g = document.getElementById("viewport1");
    var p = svg.createSVGPoint();

    p.x = coordx; 
    p.y = coordy;

    p = p.matrixTransform(g.getCTM().inverse());

    var k = svg.createSVGMatrix().scale(z).translate(-p.x, -p.y);
    setCTM(g, g.getCTM().multiply(k));
} 

wo die viewport1 element wurde definiert als :

var gelem = document.createElementNS('http://www.w3.org/2000/svg', 'g');
gelem.id = 'viewport1';

paper.canvas.appendChild(gelem);
paper.canvas = gelem;

Dann kann ich rufen: paper.zoomAndMove(minx,miny,zoomRatio);

Ist es möglich, zu transformieren die Funktion, um es zoom reibungslos?

  • Bitte geben Sie ein einfaches Beispiel, um zu sehen, wie das Zoomen derzeit führt.
InformationsquelleAutor Yukulelix | 2011-10-12
Schreibe einen Kommentar