FabricJS 对象不相对于画布调整大小
FabricJS objects not relative to canvas resize
我正在使用FabricJS创建一个全屏画布并保存服务器端的更改。在加载它之前,我调整了画布和背景的大小,以便在每次页面加载时画布都适合用户窗口。
canvas.setHeight($(window).height());
canvas.setWidth($(window).width());
canvas.backgroundImage.width = $(window).width();
canvas.backgroundImage.height = $(window).height();
问题是画布和背景被调整了,但对象没有被调整。它们相对于屏幕保持相同的位置,并且不会改变大小,因此在其他屏幕尺寸上是不合适的。如何解决这个问题?
经过多次尝试,由于AndreaBogazzi的提示,我找到了解决方案。更改背景/画布大小/位置时,对象不会相对于背景/画布保持大小/位置。
这就是为什么最好使用缩放功能,这样所有画布元素都会以相同的方式相对于彼此进行调整:
// background: background image
// zoom: zoom amount usable with canvas.setZoom(zoom).
if (background.width < $(window).width()) {
zoom = $(window).height() / background.height;
if ((zoom * background.width) > $(window).width()) {
zoom = $(window).width() / background.width;
}
} else {
zoom = $(window).width() / background.width;
if ((zoom * background.height) > $(window).height()) {
zoom = $(window).height() / background.height;
}
}
canvas.setZoom(zoom );
这将导致画布始终是其最大尺寸,无需离开屏幕,并且所有元素都保持正确的位置和高度。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- Chrome应用程序调整窗口大小保持纵横比
- 如何自动调整标签的高度以适应内容
- 导航栏没有调整到浏览器屏幕的大小
- 调整屏幕大小后不显示子菜单
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 合并两个数组,重新调整循环js
- Morris.js折线图x轴标签在调整大小后消失
- 调整缩放窗口高度提升缩放
- 调整屏幕大小时更改属性值
- 如何针对Android股票/本地浏览器来调整CSS
- 如何调整信息窗口的大小并点击按钮?+更改信息窗口的内容
- 祖尔布基金会均衡器在阿贾克斯之后调整大小
- 文本不会在屏幕大小调整时调整大小
- 网页不会随着窗口大小的调整而调整大小
- 文本区域自动调整大小调整在每一个按键上的铬
- 在容器大小调整上调整传单地图的大小
- jQuery-UI可调整大小调整所有子元素及其字体大小