HTML 5画布文本编辑

4

我在HTML5画布中使用fillText();绘制了一段文本。如何使其可编辑,并将值读入变量?由于文本将被写入某些复杂的多边形形状中,因此文本必须位于画布内。


1
你可以使用像fabric.js这样的库,它可以让你创建文本对象,实时编辑、删除、克隆、移动、旋转、缩放等等。在演示页面上点击“添加文本”,然后在画布下方的文本区域中选择并编辑。还有各种文本呈现选项,例如加下划线、删除线或阴影等。 - kangax
@kangax 有没有使用Fabric.js实时编辑文本对象的示例? kitchensink演示可以添加文本,之后可以随意缩放和旋转 - 但是否有一种简单的方法来编辑文本内容? - Mathias Bynens
1
@MathiasBynens 在kitchensink中,您可以在独立的文本区域中编辑文本,并立即在画布上反映出来(它位于画布下方)。我们在printio.ru上使用相同的方法,在其他地方也看到了这个想法的几个变化(例如,在easel.ly上,他们将文本区域定位在您正在编辑的文本旁边)。 - kangax
固定链接:http://fabricjs.com/kitchensink/ - gbjbaanb
3个回答

3

在Canvas中无法获取文本。您需要做的是,在使用 fillText(); 并呈现Canvas之前,将文本保存在变量中。当您想要编辑Canvas中的文本时,必须重新绘制Canvas,并在想要使用 fillText(); 渲染编辑后的文本时再次从变量中读取文本。


2

请看Zebra。它是一组小部件,可以在HTML画布上呈现,其中一个小部件是文本编辑器。看起来这是免费的,开源的,除了提供js文件的链接外,他们还在GitHub上提供了Git存档。http://www.zebkit.org/


0

一旦文本被绘制到画布上,它就变成了像素。原始文本(和多边形轮廓)将不会被存储。你无法从画布中获取它,就像你无法从jpgpng文件中获取它一样。

如果画布是由你的JavaScript绘制的,你可以将文本存储在其他地方。如果不是,你必须使用OCR技术来识别它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接