首页 > 课堂 > 小程序 > 正文

在小程序Canvas中使用measureText的方法示例

2020-03-21 16:09:09
字体:
来源:转载
供稿:网友

有时候我们在使用Canvas绘制一段文本时,会需要通过measureText()方法获取文本的宽度,例如:

创建canvas标签

<canvas id="canvas"></canvas>

获取一段文本的宽度

var canvas = document.getElementById('canvas');var ctx = canvas.getContext('2d');var text = ctx.measureText('foo'); // TextMetrics objecttext.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).

微信小程序现在的版本(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;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表