tôi quản lý để làm một số hack để phóng to giấy raphael, như setviewbox đã không làm việc đối với tôi, đây là chức năng tôi đã viết:Raphael hoạt hình giấy zoom
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));
}
nơi các yếu tố viewport1 được định nghĩa là :
var gelem = document.createElementNS('http://www.w3.org/2000/svg', 'g');
gelem.id = 'viewport1';
paper.canvas.appendChild(gelem);
paper.canvas = gelem;
Sau đó, tôi có thể gọi: paper.zoomAndMove(minx,miny,zoomRatio);
có thể chuyển đổi chức năng để làm cho nó zoom trơn tru?
Vui lòng cung cấp ví dụ cơ bản để xem cách hoạt động của quá trình thu phóng hiện tại. – zbug