亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

html5 canvas的繪制文本自動換行的示例代碼

2024-09-05 07:22:39
字體:
來源:轉載
供稿:網友

本文介紹怎么解決canvas繪圖過程中,drawText的換行問題,先看一個大家平時在canvas繪制文本都會遇到的問題:

一個150*100的canvas畫布,加個邊框明顯邊界

<canvas id="canvas" style="border:solid 1px darkgoldenrod;" width="200px" height="100px"></canvas>

我們先來看fillText()方法,strokeText()方法同理

var c=document.getElementById("canvas"); var ctx=c.getContext("2d"); ctx.fillStyle="#E992B9";ctx.lineWidth=1;var str = "假如生活欺騙了你,請不要悲傷!thank you!"ctx.fillText(str,0,20); 

可以看到fillText()在固寬的canvas中,字數過多的時候,并不會自動換行,我們可以增加canvas本身的寬度,但這不是解決問題的根本方法。還記得之前介紹canvas基本api的時候,有一個函數,context.measureText(text) 這個函數可以測量字體的寬高度,那就好辦了,我們計算好我們字符串的長度加上一個大概的寬度,基本上可以處理這種換行的問題了。

下面看具體實現方法:

var c=document.getElementById("canvas"); var ctx=c.getContext("2d"); ctx.fillStyle="#E992B9";ctx.lineWidth=1; var str = "假如生活欺騙了你,請不要悲傷!thank you!"var lineWidth = 0;var canvasWidth = c.width;//計算canvas的寬度var initHeight=15;//繪制字體距離canvas頂部初始的高度var lastSubStrIndex= 0; //每次開始截取的字符串的索引for(let i=0;i<str.length;i++){     lineWidth+=ctx.measureText(str[i]).width;     if(lineWidth>canvasWidth){          ctx.fillText(str.substring(lastSubStrIndex,i),0,initHeight);//繪制截取部分        initHeight+=20;//20為字體的高度        lineWidth=0;        lastSubStrIndex=i;    }     if(i==str.length-1){//繪制剩余部分        ctx.fillText(str.substring(lastSubStrIndex,i+1),0,initHeight);    }}

見效果圖:

算法:計算字符串str里面每個字符的寬度的和lineWidth,如果大于canvas的寬度,就截取這部分進行繪制,然后重置lineWidth,保存開始截取的最后的索引,當循環變量i為最后一個字符的時候,直接繪制剩余部分。

接下來:我們封裝成一個方法,方便以后直接調用:

/*str:要繪制的字符串canvas:canvas對象initX:繪制字符串起始x坐標initY:繪制字符串起始y坐標lineHeight:字行高,自己定義個值即可*/function canvasTextAutoLine(str,canvas,initX,initY,lineHeight){    var ctx = canvas.getContext("2d");     var lineWidth = 0;    var canvasWidth = c.width;     var lastSubStrIndex= 0;     for(let i=0;i<str.length;i++){         lineWidth+=ctx.measureText(str[i]).width;         if(lineWidth>canvasWidth-initX){//減去initX,防止邊界出現的問題            ctx.fillText(str.substring(lastSubStrIndex,i),initX,initY);            initY+=lineHeight;            lineWidth=0;            lastSubStrIndex=i;        }         if(i==str.length-1){            ctx.fillText(str.substring(lastSubStrIndex,i+1),initX,initY);        }    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影中文字幕一区| 国产美女高潮久久白浆| 欧美亚洲国产日本| 大胆欧美人体视频| 国产视频精品一区二区三区| 国产精品色婷婷视频| 在线视频中文亚洲| 成人久久久久爱| 国产精品吹潮在线观看| 久久精品成人欧美大片| 欧美成人高清视频| 亚洲色图激情小说| 51久久精品夜色国产麻豆| 欧美亚洲第一页| 欧美高清视频在线观看| 亚洲美女av电影| 国产精品第二页| 88国产精品欧美一区二区三区| 国产福利精品av综合导导航| 欧美大片va欧美在线播放| 91人成网站www| 日韩在线中文字幕| 69久久夜色精品国产69| 日韩av在线免播放器| 国产精品欧美一区二区三区奶水| 日韩av在线直播| 韩日精品中文字幕| 久久精品亚洲94久久精品| 国产精品高潮粉嫩av| 国内外成人免费激情在线视频| 色妞在线综合亚洲欧美| 欧美性69xxxx肥| 久久久精品国产亚洲| 伦理中文字幕亚洲| 中文字幕亚洲无线码在线一区| 色综合老司机第九色激情| 国产成人精品av在线| 亚洲香蕉成视频在线观看| 久久久久久久久久av| 日韩久久精品电影| 免费99精品国产自在在线| 亚洲精品一二区| 91香蕉嫩草影院入口| 97在线视频免费观看| 18一19gay欧美视频网站| 国产日韩精品在线播放| 成人免费视频a| 欧美乱大交xxxxx另类电影| 亚洲a成v人在线观看| 91av在线国产| 成人国产精品久久久久久亚洲| 国产亚洲精品久久久| 日韩视频中文字幕| 成人福利网站在线观看11| 91超碰中文字幕久久精品| 国产一区二区成人| 日韩av电影免费观看高清| 亚洲欧美日韩中文在线制服| 欧美极品第一页| 成人免费淫片视频软件| 性欧美暴力猛交69hd| 青青草国产精品一区二区| 久久久女人电视剧免费播放下载| 欧美在线观看www| 亚洲第一福利网站| 久久精品国产欧美亚洲人人爽| 欧美久久精品一级黑人c片| 91av在线精品| xvideos国产精品| 日韩在线观看视频免费| 国产视频综合在线| 91免费视频国产| 亚洲人av在线影院| 一区二区三区视频观看| 精品亚洲一区二区三区在线观看| 日韩精品极品毛片系列视频| 亚洲国产私拍精品国模在线观看| 久久久成人精品视频| 97在线视频一区| 国色天香2019中文字幕在线观看| 久久精视频免费在线久久完整在线看| 中文字幕无线精品亚洲乱码一区| 亚洲色图第一页| 91国语精品自产拍在线观看性色| 国产精品日韩在线播放| 欧美俄罗斯乱妇| 秋霞成人午夜鲁丝一区二区三区| 国产精品18久久久久久首页狼| www.久久草.com| 久久久久久久一| 国产视频久久久| 欧美视频免费在线| 国产欧美精品日韩精品| 亚洲欧美中文日韩在线| 川上优av一区二区线观看| 久久久国产91| 97福利一区二区| 国产www精品| 欧美日韩综合视频网址| 亚洲日本欧美日韩高观看| 久久综合久中文字幕青草| 精品美女久久久久久免费| 青青草国产精品一区二区| 91av视频导航| 成人免费网站在线观看| 2019中文字幕在线| 欧美成人第一页| 欧美另类第一页| 亚洲午夜未删减在线观看| 日韩精品中文字幕在线| 国产精品www色诱视频| 国产欧美精品一区二区三区介绍| 欧美性视频精品| 国产精品一区二区电影| 91亚洲精品在线观看| 久久激情视频久久| 欧美日韩中文字幕| 亚洲最大在线视频| 2019av中文字幕| 久久久久久91| 国内免费久久久久久久久久久| 亚洲毛片一区二区| 日韩经典中文字幕在线观看| 国产日本欧美视频| 久久精品国产一区二区三区| 精品自在线视频| 中文字幕av一区二区三区谷原希美| 国产精品久久久久久亚洲影视| 日韩中文在线中文网在线观看| 国产精品视频网| 97视频在线看| 精品久久香蕉国产线看观看亚洲| 国产一区视频在线| 亚洲色图17p| 2021国产精品视频| 91欧美精品午夜性色福利在线| 国产91九色视频| 亚洲最大福利视频网| 97国产精品视频人人做人人爱| 国产精品主播视频| 亚洲女人天堂色在线7777| 欧美一级片一区| 亚洲最大的网站| 国产精品偷伦视频免费观看国产| 97香蕉超级碰碰久久免费的优势| 久久久久久久久久久网站| 国产精品亚发布| 成人免费xxxxx在线观看| 不卡在线观看电视剧完整版| 日韩中文字幕免费| 国产日韩av在线播放| 欧美一级淫片丝袜脚交| 日韩精品中文字幕在线| 日本一区二区不卡| 欧美综合一区第一页| 欧美激情18p| 亚洲一区二区三区成人在线视频精品| 国色天香2019中文字幕在线观看| 国产精品一区二区av影院萌芽| 国产精品三级美女白浆呻吟| 国产亚洲aⅴaaaaaa毛片| 中文字幕在线成人| 成人黄色短视频在线观看| 国产精品自拍视频|