在html5画布中将文本绘制为图像

Draw Text as image in html5 canvas

本文关键字:绘制 图像 文本 html5 布中      更新时间:2024-01-31

我在一个HTML5项目中工作。我想画有边界的文字(如文字注释)。

首先,我画了一个矩形,并在鼠标移动中填充文本,如下所示:

context.strokeRect(x,y,w,h);
context.fillText('Enter youe text here',x,y);

但是当我开始绘制文本注释时,文本就完全绘制了。因此文本溢出到矩形边界之外。所以我想拍摄矩形部分的图像,然后我可以处理文本的溢出问题。我正在使用以下方式来做到这一点:-

 context.strokeRect(x,y,w,h);
 context.fillText('Enter youe text here',x,y);
 var imageData = context.getImageData(x,y,w,h);
 var data = imageData.data;
 context.putImageData(imageData, x,y);

通过这种方式,文本图像在成功创建,但现在我如何隐藏fillText(x,y,w,h)语句,并且我也在文本的帮助下在矩形中获取图像数据。

T提前存储大量

如果我理解正确的话,你似乎想测量文本宽度并拆分画布?

我打了一个小例子的原型,解释了如何使用measureText方法:

http://jsfiddle.net/sQ3S7/

实际上,正如您在演示中看到的,它没有返回测量的高度尺寸。因此,您可能需要逐行循环浏览画布,以了解文本的高度

对于我的JS游戏引擎,我做了一个小字体工具,可以做到这一点,并将其导出为JSON格式,也许后面的算法会帮助你:)

http://martens.ms/lycheeJS/tool/Font.html

代码可在github.com/martensms/lichieJS上获得(不能发布超过两个链接,因为我是SO的新手)

~欢呼