根据 PaperJS 中的屏幕大小调整光栅大小
Resize Raster according to screen size in PaperJS
我想在通过 PaperJS 调整 canvas 大小时调整光栅(图像)的大小。我正在使用以下代码:
var last_point = view.center;
var img = new Raster('images/test.png', view.center);
img.onLoad = function() {
resizeImg();
}
function onResize(event) {
view.scrollBy(last_point.subtract(view.center));
last_point = view.center;
resizeImg();
}
function resizeImg() {
var width = paper.view.size.width;
var scale = (width / img.width) * 0.75;
img.scale(scale);
}
但是,一旦通过resizeImg()
函数,图像就没有了(将函数注释掉会使图像重新出现)。
我在函数中遗漏了什么? 估计只是简单的计算错误
对象的宽度由其 bounds.width
属性 引用,而不是 width
单独引用。
function resizeImg() {
var width = paper.view.size.width;
var scale = (width / img.bounds.width) * 0.75;
img.scale(scale);
}
以下保留了图像的宽高比,让您免去做数学题的麻烦。 fitBounds
(doc) and view.onFrame
(doc) 让它全部自动工作。
…
function resizeImg () {
img.fitBounds(view.bounds)
}
view.onFrame = function (event) {
resizeImg()
}
我想在通过 PaperJS 调整 canvas 大小时调整光栅(图像)的大小。我正在使用以下代码:
var last_point = view.center;
var img = new Raster('images/test.png', view.center);
img.onLoad = function() {
resizeImg();
}
function onResize(event) {
view.scrollBy(last_point.subtract(view.center));
last_point = view.center;
resizeImg();
}
function resizeImg() {
var width = paper.view.size.width;
var scale = (width / img.width) * 0.75;
img.scale(scale);
}
但是,一旦通过resizeImg()
函数,图像就没有了(将函数注释掉会使图像重新出现)。
我在函数中遗漏了什么? 估计只是简单的计算错误
对象的宽度由其 bounds.width
属性 引用,而不是 width
单独引用。
function resizeImg() {
var width = paper.view.size.width;
var scale = (width / img.bounds.width) * 0.75;
img.scale(scale);
}
以下保留了图像的宽高比,让您免去做数学题的麻烦。 fitBounds
(doc) and view.onFrame
(doc) 让它全部自动工作。
…
function resizeImg () {
img.fitBounds(view.bounds)
}
view.onFrame = function (event) {
resizeImg()
}