【问题标题】:Text alignment not working as expected in fabric.js文本对齐在 fabric.js 中没有按预期工作
【发布时间】:2015-05-21 12:30:45
【问题描述】:

我的项目需要能够在 Canvas 上插入文本,用户可以指定文本是左对齐、右对齐还是在指定的边界框中居中。我正在使用 fabric.js 并设置 textAlign 的值,但它没有按我的预期工作。我指定的 x 位置始终是文本的左边缘。如果我将 textAlign 设置为“center”并且有多行文本,它们确实相对于彼此居中,但它们不在边界框中居中;相反,我指定的 X 位置始终是最长线的左边缘。

设置元素的代码如下:

var text = new fabric.Text(this.getText(), {
   hasControls: false,
   selectable: false,
   fontSize: this.getPointSize(),
   fontFamily: this.getTypeface(),
   fill: this.getColor(),
   left: xpos,
   top: pos.y,
   originX: pos.originx,
   originY: pos.originy,
   width: this.getWidth(),
   height: this.getHeight(),
   fontWeight: weight,
   fontStyle: fstyle,
   textAlign: alignment
});

我想要的是绘制右对齐的文本,其右边缘是指定的 X 位置,或者以指定的左右边缘之间的中点为中心的居中文本。有没有办法使用 Fabric 和/或 Canvas 做到这一点?

【问题讨论】:

  • 您可以添加一个额外的功能来应对对齐方式的变化。如果对齐设置为右对齐,则将元素的 x 位置调整为文本对象的宽度。如果对齐居中,则使用宽度的 1/2。

标签: javascript text fabricjs


【解决方案1】:

我猜你想要的是fabric.Textbox,不是吗?

fabric.Textbox 功能尚未发布,但在 github 上有一个 pull request。 https://github.com/kangax/fabric.js/pull/1778

等待新版本会更好,但是,如果您尽快需要此功能,您可以从发出拉取请求的分支中使用它。 https://github.com/PosterMyWall/fabric.js/tree/TextboxPullRequest

【讨论】:

  • 这绝对值得一试。包装对我的应用程序来说也是一件很棒的事情。
猜你喜欢
  • 1970-01-01
  • 2018-01-21
  • 2013-10-22
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2019-12-25
相关资源
最近更新 更多