在html5的canvas的一个问题。。大神,来帮帮忙啊!

在canvas上添加一张图片,在图片中间写字,怎么控制文字根据图片的宽度自动换行?有大神能给个DEMO吗???????... 在canvas上添加一张图片,在图片中间写字,怎么控制文字根据图片的宽度自动换行?

有大神能给个DEMO吗???????
展开
 我来答
xiarugu
2012-07-05 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:100%
帮助的人:64.9万
展开全部
将文字显示在一个div中, 调整div样式, 保持宽度, 字体, 行高, 字号等信息和要在canvas上绘制的文字样式一致, 然后把要绘制的文字赋值到这个div中
var rng = document.createRange(); //生成一个文本区域
rng.selectNode(div.childNodes[0]); //文本区指向刚才的div里面的文本内容
var rects = rng.getClientRects(); //获得文本区的形状
用关键词"Range"去查询一下firefox的官方文档, 这个rects是一个数组
如果文本区自动换行成了3行, 那么rects中就会有3个
下面进行循环, div.childNodes[0].length 得到文字数量
var node = div.childNodes[0];
var length = node.length;
var lines = [];

for(var i = 0; i < length; i++)
{
rng.setEnd(node, i);
if(rng.getClientRects().length < 2)
continue;

if(i == length - 1)
{
lines.push(rng.toString());
break;

}

var txt = rng.toString();
lines.push(txt.substr(0, txt.length - 1));
rng.setStart(node, i - 1);

}
现在, lines数组中保存的就是各行文字了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式