HTML5问题

t236846681 2011-09-14 10:49:06
var _canvas = document.getElementById('cansStage');
var _context = _canvas.getContext("2d");
_context .fillText('hello world llo world'llo world'llo world'llo world'llo world'', 16, 16); //
无法换行呀,伤不起
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
森林小王子 2011-11-28
  • 打赏
  • 举报
回复
Html5 canvas貌似没有支持换行操作,不过你可以自己实现一个。例如:
function getLines(text, maxWidth) {
var returns = text.split("\n");
var lines = [];
var lastPhrase = "";
function splitWord() {
var width = measureText(lastPhrase).width;
var posA = 0;
var posZ = 0;
if (width > maxWidth) {
for (var n = 0, length = lastPhrase.length; n < length; n ++) {
var width = measureText(lastPhrase.substr(posA, posZ ++)).width;
if (width > maxWidth) {
lines.push(lastPhrase.substr(posA, posZ - 2));
posA = n - 1;
posZ = 2;
}
}
return lastPhrase.substr(posA, posZ + 2);
}
};
for (var n = 0; n < returns.length; n++) {
if (lastPhrase) lines.push(lastPhrase);
var phrase = returns[n];
var spaces = phrase.split(" ");
var lastPhrase = "";
for (var i = 0; i < spaces.length; i++) {
var measure = measureText(lastPhrase + " " + spaces[i]).width;
if (measure < maxWidth) {
lastPhrase += ((lastPhrase ? " " : "") + spaces[i]);
} else {
if (measure > maxWidth) {
var split = splitWord();
if (split) {
lastPhrase = split + " " + spaces[i];
} else {
lines.push(lastPhrase);
lastPhrase = spaces[i];
}
}
}
if (i == spaces.length - 1) {
lines.push(lastPhrase);
lastPhrase = "";
break;
}
}
}
return lines;
};

然后这样调用:
var lines = getLines(text + " ", maxWidth);
for (var n = 0, length = lines.length; n < length; n ++) {
ctx.fillText(lines[n], 0, (n * bboxHeight) + offsety);
}
希望对你有所帮助
t236846681 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 blue_lg 的回复:]
CANVAS的一个不完美之处 要不设置一下width试下或者另起一行!
[/Quote]
已经加了宽度,没效果。
这个canvas是绘图的,所有可能\r\n无效果
难道换行要重新绘制吗?
这个是网站 http://www.iseefor.com/Html5_one.html帮我看看如何换行。
t236846681 2011-09-15
  • 打赏
  • 举报
回复
看来可能我超前了。
打字员 2011-09-15
  • 打赏
  • 举报
回复
MS现在还无法实现LZ的需求。
t236846681 2011-09-15
  • 打赏
  • 举报
回复
没人回答吗?
BLUE_LG 2011-09-14
  • 打赏
  • 举报
回复
CANVAS的一个不完美之处 要不设置一下width试下或者另起一行!
豆虫 2011-09-14
  • 打赏
  • 举报
回复
加\r\n处理
Exodia 2011-09-14
  • 打赏
  • 举报
回复
加个 '\n' 试试

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧