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

首頁 > 編程 > HTML > 正文

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

2024-08-26 00:21:01
字體:
來源:轉載
供稿:網友

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

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

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

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

html5,canvas,自動換行

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);    }}

見效果圖:

html5,canvas,自動換行

算法:計算字符串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);        }    }  }

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


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女久久久免费| 欧美一区二区视频97| 国内精品小视频在线观看| 国产99视频在线观看| 欧美最猛性xxxxx亚洲精品| 91av福利视频| 欧美日韩美女在线| 亚洲国产私拍精品国模在线观看| 91精品视频免费观看| 国产精品美女免费视频| 欧美裸体视频网站| 97香蕉久久超级碰碰高清版| 欧美激情一区二区三区在线视频观看| 国产精品www| 国产在线98福利播放视频| 欧美孕妇性xx| 久久久久久亚洲精品| 国产精品亚洲一区二区三区| 91在线观看免费高清| 国产乱人伦真实精品视频| 欧美尺度大的性做爰视频| 亚洲欧美精品suv| 欧美大片网站在线观看| 国产不卡视频在线| 国产精品自产拍高潮在线观看| 亚洲国产成人在线播放| 国产一区二区三区视频| 色老头一区二区三区| 国产欧美一区二区| 国产成人综合av| 亚洲精品国产福利| 午夜精品久久久久久99热软件| 性欧美xxxx| 日韩中文字幕视频在线| 国产小视频国产精品| 久久精品男人天堂| 久久久久久com| 久久99国产精品自在自在app| 亚洲精品狠狠操| 日韩毛片中文字幕| 高清日韩电视剧大全免费播放在线观看| 国产成人+综合亚洲+天堂| 色偷偷偷综合中文字幕;dd| 欧美成aaa人片在线观看蜜臀| 国产国产精品人在线视| www国产精品视频| 亚洲欧美日韩精品久久| 久久九九热免费视频| 国产亚洲精品久久| 2019中文字幕在线免费观看| 久久中文字幕视频| 欧美成人精品在线| 亚洲国产欧美一区二区丝袜黑人| 国产精品久久久91| 日韩成人av在线| 久久理论片午夜琪琪电影网| 中文字幕亚洲一区二区三区| 欧美成人精品在线视频| 一区二区欧美日韩视频| 亚洲黄一区二区| 中文字幕日韩欧美| 国产精品v片在线观看不卡| 亚洲丁香久久久| 色综合91久久精品中文字幕| 亚洲曰本av电影| 成人午夜在线观看| 最新69国产成人精品视频免费| 亚洲欧美制服综合另类| 欧美日韩国产综合新一区| 国产精品91一区| 亚洲xxxxx电影| 国产日韩av在线播放| 亚洲2020天天堂在线观看| 国产精品视频xxxx| 精品国产乱码久久久久久婷婷| 91日本视频在线| 18一19gay欧美视频网站| 国产精品视频公开费视频| 日韩女优人人人人射在线视频| 日本精品一区二区三区在线| 久久高清视频免费| 亚洲激情国产精品| 欧美另类精品xxxx孕妇| 一区二区av在线| www.日韩欧美| 日韩久久免费视频| 日韩欧亚中文在线| 操人视频在线观看欧美| 精品偷拍各种wc美女嘘嘘| 久久久www成人免费精品张筱雨| 国产a∨精品一区二区三区不卡| 欧美日韩国产中文精品字幕自在自线| 久久久91精品| 日韩在线观看免费| 26uuu亚洲伊人春色| 日韩欧美一区二区三区| 亚洲成人激情小说| 成人中文字幕+乱码+中文字幕| 亚洲爱爱爱爱爱| 精品亚洲一区二区三区在线播放| 欧美又大又硬又粗bbbbb| 日韩激情第一页| 亚洲高清av在线| 久久av.com| 欧美在线观看一区二区三区| 亚洲欧洲美洲在线综合| 中文字幕一区二区三区电影| 欧美成人精品在线视频| 日韩成人激情在线| 久久九九热免费视频| 综合网日日天干夜夜久久| 91sa在线看| 欧美猛交ⅹxxx乱大交视频| 欧美第一黄网免费网站| 国产成人一区二区三区小说| 蜜臀久久99精品久久久无需会员| 国产91露脸中文字幕在线| 欧美黄色免费网站| 亚洲影院高清在线| 亚洲欧美日韩第一区| 日本中文字幕久久看| 精品露脸国产偷人在视频| 久久久精品亚洲| 亚洲国产精品久久久久久| 欧美精品福利在线| 欧美大胆在线视频| 国产成人精品av在线| 欧美成人精品在线视频| 国产欧美在线视频| 国产成人精品免高潮在线观看| 欧美一级大片在线观看| 国产精品aaaa| 久久免费视频网| 26uuu日韩精品一区二区| 久久香蕉频线观| 久久九九热免费视频| 成人午夜高潮视频| 国产亚洲视频在线观看| 91中文字幕在线| 91黑丝高跟在线| 久久99精品国产99久久6尤物| 久久久久久久激情视频| 国产激情久久久| 亚洲一级片在线看| 77777少妇光屁股久久一区| 中文字幕精品网| 亚洲aⅴ男人的天堂在线观看| 国产精品色婷婷视频| 精品国产一区二区三区在线观看| 国产美女久久精品| 在线观看久久久久久| 国产欧美一区二区三区久久人妖| www国产精品com| 亚洲欧美激情精品一区二区| 亚洲国产婷婷香蕉久久久久久| 日韩一区二区精品视频| 国内精品久久影院| 久久久免费av| 欧美精品免费在线观看| 亚洲色图欧美制服丝袜另类第一页| 日韩av电影在线网| 日韩精品视频在线观看网址| 亚洲中国色老太| 国产免费亚洲高清|