我設法做一些黑客爲了放大拉斐爾紙張,因爲setviewbox不是爲我工作的,這裏是我寫的函數:其中viewport1元素定義爲拉斐爾紙張縮放動畫
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));
}
:
var gelem = document.createElementNS('http://www.w3.org/2000/svg', 'g');
gelem.id = 'viewport1';
paper.canvas.appendChild(gelem);
paper.canvas = gelem;
然後我可以叫:paper.zoomAndMove(minx,miny,zoomRatio);
是否有可能轉換功能,使之順利放大?
請提供一個基本示例,以瞭解縮放當前如何執行。 – zbug