javascript - 如何在fabric.js中调整组中某些对象的大小?
问题描述
我有一组两个对象,我想要的是在调整组大小时,其中一个对象不会改变大小,但位置会改变。
我已经搜索了文档,但找不到解决此问题的参考资料。
var r = 15;
var rect = new fabric.Rect({
left: 50,
top: 50,
fill: 'blue',
width: 100,
height: 100
});
var linkBtn = new fabric.Circle({
left: 50 + rect.width / 2 - r,
top: 50 - r,
strokeWidth: 1,
radius: r,
fill: '#fff',
stroke: '#666'
});
var g = new fabric.Group([rect, linkBtn]);
g.hasRotatingPoint = false;
canvas.add(g);
当我拉伸组的宽度时,对象“linkBtn”像椭圆形一样变形,它的高度也一样。我希望在更改大小时,对象“linkBtn”的大小始终相同,并且始终是对象“rect”宽度的一半。
解决方案
添加 {lockUniScaling : true} 作为此行的第二个参数
var g = new fabric.Group([rect, linkBtn], {lockUniScaling : true});
lockUniScaling 防止在 X 或 Y 方向上缩放,但不能同时在两个方向上缩放。换句话说,防止对象的非比例缩放。
推荐阅读
- javascript - 我无法将“名称”属性添加到 Accordion、AccordionSummary(Material UI 组件)?
- vue.js - 如何删除上传的图片
- kotlin - 从暴露的 orm 表生成 SQL 迁移
- sql-server - SQL Server 查询以根据用户提供的 id 获取嵌套的子记录
- vba - 用用户输入替换零长度邮件合并字段
- mysql - 无法打开文件,错误 2 - MySQL 导入
- edi - 接收方需要什么来接收 EDI 文件?
- css - Safari 14 溢出隐藏不适用于嵌套旋转
- python - 在 Python 代码中引用 CSS 样式表
- flutter - Flutter 基础知识:错误:找不到类型“AssetBundle”。AssetBundle' 不是类型