【发布时间】:2017-11-14 00:52:48
【问题描述】:
我正在使用一个函数来缩放整个 fabric.js 画布,这个函数像 zoomCanvas(2.2) 一样采用百分比值;其中 2.2 表示 220%,但不是百分比,我需要按像素缩放画布以适应容器中的画布,例如,当从 json 数据将画布加载到页面上时,其初始大小为 1200 像素 x 700 像素,而我的容器大小为 500 像素。现在我需要找到一种方法可以将此 500px 转换为百分比值,以便整个画布及其所有对象都适合 500px。
这是比例函数,其中因子是百分比值
function zoomCanvas(factor) {
canvas.setHeight(canvas.getHeight() * factor);
canvas.setWidth(canvas.getWidth() * factor);
if (canvas.backgroundImage) {
// Need to scale background images as well
var bi = canvas.backgroundImage;
bi.width = bi.width * factor; bi.height = bi.height * factor;
}
var objects = canvas.getObjects();
var tcounter = 0;
for (var i in objects) {
tcounter++;
//alert(tcounter);
var scaleX = objects[i].scaleX;
var scaleY = objects[i].scaleY;
var left = objects[i].left;
var top = objects[i].top;
var tempScaleX = scaleX * factor;
var tempScaleY = scaleY * factor;
var tempLeft = left * factor;
var tempTop = top * factor;
objects[i].scaleX = tempScaleX;
objects[i].scaleY = tempScaleY;
objects[i].left = tempLeft;
objects[i].top = tempTop;
objects[i].setCoords();
}
canvas.renderAll();
canvas.calcOffset();
}
【问题讨论】:
-
是否需要从 1200x700 像素转换为 500x500 像素?
-
感谢您的回复...不,它只是一个示例,容器大小在不同设备上会有所不同
标签: javascript html fabricjs