在小程序Canvas中使用measureText的方法示例
有時(shí)候我們在使用Canvas繪制一段文本時(shí),會需要通過measureText()方法獲取文本的寬度,例如:
創(chuàng)建canvas標(biāo)簽
<canvas id="canvas"></canvas>
獲取一段文本的寬度
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var text = ctx.measureText('foo'); // TextMetrics object
text.width; // 16;
如上所示,measureText返回的其實(shí)是一個(gè)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,所以我自己寫了個(gè)類似于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;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js canvas實(shí)現(xiàn)寫字動畫效果
- JS+HTML5 Canvas實(shí)現(xiàn)簡單的寫字板功能示例
- js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法
- Javascript保存網(wǎng)頁為圖片借助于html2canvas庫實(shí)現(xiàn)
- javascript結(jié)合html5 canvas實(shí)現(xiàn)(可調(diào)畫筆顏色/粗細(xì)/橡皮)的涂鴉板
- JavaScript+html5 canvas實(shí)現(xiàn)本地截圖教程
- html5 canvas js(數(shù)字時(shí)鐘)實(shí)例代碼
- JS+Canvas 實(shí)現(xiàn)下雨下雪效果
- js使用html2canvas實(shí)現(xiàn)屏幕截取的示例代碼
- JS使用canvas中的measureText方法測量字體寬度示例
相關(guān)文章
javascript獲取以及設(shè)置光標(biāo)位置
本文介紹了javascript獲取以及設(shè)置光標(biāo)位置的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
JavaScript基礎(chǔ)篇(6)之函數(shù)表達(dá)式閉包
這篇文章主要介紹了javascript基礎(chǔ)篇(6)之函數(shù)表達(dá)式閉包的相關(guān)資料,需要的朋友可以參考下2015-12-12
微信小程序中選中手機(jī)相冊圖片上傳到服務(wù)器的步驟
這篇文章主要介紹了微信小程序中選中手機(jī)相冊圖片上傳到服務(wù)器的步驟,現(xiàn)圖片上傳我們需要使用chooseImg和uploadFile這兩個(gè)api,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-04-04
fiv.js實(shí)現(xiàn)flv文件blob流實(shí)時(shí)播放的項(xiàng)目實(shí)踐
本文主要介紹了fiv.js實(shí)現(xiàn)flv文件blob流實(shí)時(shí)播放的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

