栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Fabric.js 实现文本自动换行

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Fabric.js 实现文本自动换行

在Fabric.js中,可以通过 Text 或 IText;创建文字,但是文本是无法换行

 Fabric.js 提供了 Textbox 类,继承自 IText;

Textbox 类允许用户调整文本矩形的大小并自动换行。文本框的Y比例已锁定,用户只能更改宽度。高度将根据线的环绕自动调整。

 代码
  • 设置 splitByGrapheme
  • 设置 width
  • 设置 lockScalingY
let text = new fabric.Textbox(work, {
        stroke: "red",
        fill: "blue",
        width: 100,
        top: 0,
        left: 0,
        fontSize: 18,
        lineHeight: 1,
        fontWeight: "bold",
        textAlign: "left", // 文字对齐
        lockRotation: true, // 禁止旋转
        lockScalingY: true, // 禁止Y轴伸缩
        lockScalingFlip: true, // 禁止负值反转
        splitByGrapheme: true, // 拆分中文,可以实现自动换行
        objectCaching: false,
    });
效果

         控制 mr 的 control 可以动态对文本进行换行。

 


 Q:

        但是,当Textbox选中(selected)一次后,再次选中修改宽度时,问题就来了。

        修改宽度文本没有自动换行,而是文本被拉长或压缩了。

        对比前后两次的target属性,发现再次修改时,target的属性出现了scaleX、controls等属性,以至于后面宽度变化不会自动换行,而是文字伸缩。

解决:

        监听 textbox 的 scaling 事件,修改 textbox 的 scaleX 和 width 属性

text.on("scaling", (ev)=>{
        let target = ev.transform.target
        let width = target.get("width") * target.get("scaleX")
        target.set("width", width)
        target.set("scaleX", 1)
    })

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号