html5 canvas绘制文字按规则换行
2017-08-01 18:11
706 查看
今天遇到了一个公司项目,需要使用canvas将文字绘制成图片使用。查了一查网上虽然有相关的代码,但是都是固定的,还不好修改,索性直接自己重新写了一个。
在这里提示一下,一定要注意,如果修改了canvas的高度,当前设置的所有的东西都会失效。
而且公司还要求每一行开头不能是标点符号,耗费一天的时间,总算写了出来。
总的想法是,canvas有一个能够获得将一个字符串绘制到canvas上得到绘制多宽的方法measureText(text).width,所以,我们可以通过判断长度来自动换行。
for(var i = 0; i<settings.text.length; i++){
//获取当前的截取的字符串的宽度
lineWidth = ctx.measureText(settings.text.substr(lastTextIndex,i-lastTextIndex)).width;
if(lineWidth > settings.drawWidth){
//判断最后一位是否是标点符号
if(judgePunctuationMarks(settings.text[i-1])){
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex));
lastTextIndex = i;
}else{
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex-1));
lastTextIndex = i-1;
}
}
//将最后多余的一部分添加到数组
if(i === settings.text.length - 1){
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex+1));
}
}上面就是我写的一个循环,如果超过了我定义的一行的宽度,就将换行,然后放到一个数组当中,统一绘制。
具体代码请看案例网址:
https://johnson2heng.github.io/PicClipUpload/text.html
在这里提示一下,一定要注意,如果修改了canvas的高度,当前设置的所有的东西都会失效。
而且公司还要求每一行开头不能是标点符号,耗费一天的时间,总算写了出来。
总的想法是,canvas有一个能够获得将一个字符串绘制到canvas上得到绘制多宽的方法measureText(text).width,所以,我们可以通过判断长度来自动换行。
for(var i = 0; i<settings.text.length; i++){
//获取当前的截取的字符串的宽度
lineWidth = ctx.measureText(settings.text.substr(lastTextIndex,i-lastTextIndex)).width;
if(lineWidth > settings.drawWidth){
//判断最后一位是否是标点符号
if(judgePunctuationMarks(settings.text[i-1])){
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex));
lastTextIndex = i;
}else{
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex-1));
lastTextIndex = i-1;
}
}
//将最后多余的一部分添加到数组
if(i === settings.text.length - 1){
arr.push(settings.text.substr(lastTextIndex,i-lastTextIndex+1));
}
}上面就是我写的一个循环,如果超过了我定义的一行的宽度,就将换行,然后放到一个数组当中,统一绘制。
具体代码请看案例网址:
https://johnson2heng.github.io/PicClipUpload/text.html
相关文章推荐
- HTML5 canvas 绘制的文字如何换行?
- html5使用canvas绘制文字特效
- html5-canvas的绘制文本自动换行
- html5 canvas学习--绘制文字
- HTML5中canvas知识点详解8-绘制文字
- html5中canvas中绘制渐变和绘制文字顺序问题
- html5笔记4 — canvas绘制文字
- html5教程 (三)(canvas绘制文字)
- HTML5 Canvas动态绘制心型线和玫瑰线
- HTML5教程实例-用Canvas标签绘制圆形
- html5 canvas基本图形绘制
- HTML5 Canvas: 绘制矩形
- 【实例】html5-canvas绘制线段、矩形和圆
- HTML5 Canvas 绘制六叶草
- HTML5 Canvas 绘制新西兰国旗
- HTML5中使用canvas绘制复杂图形
- HTML5 Canvas 绘制齿轮【每日一段代码34】
- js HTML5 canvas绘制图片的方法
- Html5 canvas黑客帝国文字瀑布效果
- HTML5吃豆豆游戏开发实战(一)使用Canvas绘制游戏主角