成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在小程序Canvas中使用measureText

Yi_Zhi_Yu / 2962人閱讀

摘要:有時候我們在使用繪制一段文本時,會需要通過方法獲取文本的寬度,例如創(chuàng)建標(biāo)簽獲取一段文本的寬度如上所示,返回的其實是一個對象,它包含了文本的寬度,上的解釋如下在微信小程序現(xiàn)在的版本中,小程序的還不支持,所以我自己寫了個類似于方法,通過獲取文本

有時候我們在使用Canvas繪制一段文本時,會需要通過measureText()方法獲取文本的寬度,例如:

創(chuàng)建canvas標(biāo)簽
獲取一段文本的寬度
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var text = ctx.measureText("foo"); // TextMetrics object
text.width; // 16;

如上所示,measureText返回的其實是一個TextMetrics對象,它包含了文本的寬度,MDN上的解釋如下:

The CanvasRenderingContext2D.measureText() method returns a TextMetrics object that contains information about the measured text (such as its width for example).

在微信小程序現(xiàn)在的版本(v2.13.7)中,小程序的canvas還不支持measureText,所以我自己寫了個類似于measureText方法,通過canvas獲取文本的寬度,方法如下:

function measureText (text, fontSize=10) {
    text = String(text);
    var text = text.split("");
    var width = 0;
    text.forEach(function(item) {
        if (/[a-zA-Z]/.test(item)) {
            width += 7;
        } else if (/[0-9]/.test(item)) {
            width += 5.5;
        } else if (/./.test(item)) {
            width += 2.7;
        } else if (/-/.test(item)) {
            width += 3.25;
        } else if (/[u4e00-u9fa5]/.test(item)) {  //中文匹配
            width += 10;
        } else if (/(|)/.test(item)) {
            width += 3.73;
        } else if (/s/.test(item)) {
            width += 2.5;
        } else if (/%/.test(item)) {
            width += 8;
        } else {
            width += 10;
        }
    });
    return width * fontSize / 10;
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97784.html

相關(guān)文章

  • 開發(fā)適用于微信小程序的跨平臺圖表庫:part1

    摘要:寫在前面微信小程序出來已經(jīng)有一段時間了,上也有很多人開源了很多項目。但是由于微信平臺的限制底層能力調(diào)用為一系列封裝,圖表的制作一直是個比較頭疼的問題。這個圖形庫已經(jīng)完成基本的圖形建設(shè),已經(jīng)支持瀏覽器,,以及微信小程序等環(huán)境。 寫在前面 微信小程序出來已經(jīng)有一段時間了,github上也有很多人開源了很多項目。但是由于微信平臺的限制(底層Canvas能力調(diào)用為一系列JSBridge封裝),...

    mingde 評論0 收藏0
  • 程序如何生成海報分享朋友圈

    摘要:項目需求寫完有一段時間了,但是還是想回過來總結(jié)一下,一是對項目的回顧優(yōu)化等,二是對坑的地方做個記錄,避免以后遇到類似的問題。需求利用微信強大的社交能力通過小程序達(dá)到裂變的目的,拉取新用戶。 項目需求寫完有一段時間了,但是還是想回過來總結(jié)一下,一是對項目的回顧優(yōu)化等,二是對坑的地方做個記錄,避免以后遇到類似的問題。 需求 利用微信強大的社交能力通過小程序達(dá)到裂變的目的,拉取新用戶。生成的...

    Lemon_95 評論0 收藏0
  • 程序如何生成海報分享朋友圈

    摘要:項目需求寫完有一段時間了,但是還是想回過來總結(jié)一下,一是對項目的回顧優(yōu)化等,二是對坑的地方做個記錄,避免以后遇到類似的問題。需求利用微信強大的社交能力通過小程序達(dá)到裂變的目的,拉取新用戶。摘要: 小程序開發(fā)必備技能啊... 原文:小程序如何生成海報分享朋友圈 作者:小白 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 項目需求寫完有一段時間了,但是還是想回過來總結(jié)一下,一是對項目的回顧優(yōu)...

    lemon 評論0 收藏0
  • [填坑手冊]小程序Canvas生成海報(一)---完整流程

    摘要:海報生成示例最近智酷君在做小程序生成海報的項目中遇到一些棘手的問題,在網(wǎng)上查閱了各種資料,也踩扁了各種坑,智酷君希望把這些填坑經(jīng)驗整理一下分享出來,避免后來的兄弟重復(fù)掉坑。 showImg(https://segmentfault.com/img/bVbs5V8?w=343&h=517);海報生成示例 最近智酷君在做[小程序]canvas生成海報的項目中遇到一些棘手的問題,在網(wǎng)上查閱了...

    shleyZ 評論0 收藏0

發(fā)表評論

0條評論

Yi_Zhi_Yu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<