【发布时间】: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