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

 更新时间:2018年10月19日 11:59:41   作者:4fun  
有时候我们在使用Canvas绘制一段文本时,会需要通过measureText()方法获取文本的宽度,本文主要介绍了在小程序Canvas中使用measureText的方法示例,需要的朋友可以参考下

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

创建canvas标签

<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返回的其实是一个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;
}

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

相关文章

  • js 创建书签小工具之理论

    js 创建书签小工具之理论

    书签小工具(Bookmarklets)是一个非常棒的javascript代码小片断伪装成的小应用,它驻留在你的浏览器里并为网页提供额外的功能。这里我们将研究如何从头开始创建一个书签小工具及一些最佳实践的建议。
    2011-02-02
  • 本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结

    本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结

    遇到的本地图片预览的需求,IE6下可以直接从file的value获取图片路径来显示预览,IE7和IE8下通过select获取file的图片路径,再用滤镜来显示预览,至于FireFox祥看本文吧,希望可以帮助到你
    2013-03-03
  • 使用JS读取XML文件的方法

    使用JS读取XML文件的方法

    由于项目上需要解析xml,于是各种百度,然后自己总结了下各个主流浏览器解析xml的方法,下面通过本文给大家详细介绍下使用JS读取XML文件的方法,一起看看吧
    2016-11-11
  • JavaScript 中从 URL 获取数据的方法

    JavaScript 中从 URL 获取数据的方法

    这篇文章主要介绍了在 JavaScript 中从 URL 获取数据,我们使用了open函数,将请求方法类型和URL作为参数传递,并调用XMLHttpRequest()的send()方法,结合示例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • ASP中用Join和Array,可以加快字符连接速度的代码

    ASP中用Join和Array,可以加快字符连接速度的代码

    ASP中用Join和Array,可以加快字符连接速度的代码...
    2007-08-08
  • javascript实现电脑和手机版样式切换

    javascript实现电脑和手机版样式切换

    这篇文章主要为大家详细介绍了javascript实现电脑和手机版样式切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • BootStrap table实现表格行拖拽效果

    BootStrap table实现表格行拖拽效果

    这篇文章主要为大家详细介绍了BootStrap table实现表格行拖拽效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • javascript中错误使用var造成undefined

    javascript中错误使用var造成undefined

    这篇文章主要介绍了javascript中错误使用var造成undefined的原因,实例分析了错误使用var造成undefined的过程,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 解析JavaScript中delete操作符不能删除的对象

    解析JavaScript中delete操作符不能删除的对象

    这篇文章主要是对JavaScript中delete操作符不能删除的对象进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 基于javascript实现最简单选项卡切换

    基于javascript实现最简单选项卡切换

    这篇文章主要为大家详细介绍了基于javascript实现最简单选项卡切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论