国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

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

2020-03-24 15:52:30
字體:
供稿:網(wǎng)友
在使用 canvas 繪制某字符串的時候,我們可能想要讓該字符串在某處按要求換行。那么應(yīng)該如何實現(xiàn),本文就來介紹一下,有興趣的可以了解一下。

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

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

 canvas id= canvas >

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

var c=document.getElementById( canvas var ctx=c.getContext( 2d ctx.fill >

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

下面看具體實現(xiàn)方法:

var c=document.getElementById( canvas var ctx=c.getContext( 2d ctx.fill >

見效果圖:

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

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

/*str:要繪制的字符串canvas:canvas對象initX:繪制字符串起始x坐標(biāo)initY:繪制字符串起始y坐標(biāo)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,防止邊界出現(xiàn)的問題 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); }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助!

以上就是html5 canvas的繪制文本自動換行的示例代碼的詳細內(nèi)容,其它編程語言

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北川| 新巴尔虎左旗| 郁南县| 西和县| 博客| 南雄市| 双城市| 垦利县| 南投县| 留坝县| 阜阳市| 富宁县| 广河县| 读书| 临沂市| 景洪市| 嘉鱼县| 凯里市| 自治县| 花莲县| 霍城县| 湟源县| 眉山市| 庆安县| 澎湖县| 肇东市| 龙胜| 金山区| 建瓯市| 保靖县| 沭阳县| 治县。| 酒泉市| 乾安县| 佛学| 鹿泉市| 微山县| 晋宁县| 芜湖县| 黄平县| 甘德县|