学习最好的方式就是一边看文档,一边动手,这样可以加深记忆。关于canvas绘制文本的内容你可以点击此处查看 例子 ,进行更好的互动学习。
参数说明:
当然了,在canvas里面我们也可以像css里去定义样式:
设置文字的 font-style, font-variant, font-weight, font-size, line-height 和 font-family,用法和css的font语法一致,默认的字体是 10px sans-serif
,例如:
ctx.font = "24px 'Helvetica Neue','Helvetica','Microsoft YaHei','WenQuanYi Micro Hei',Arial,sans-serif";
设置文本的水平对齐方式,默认对齐方式是 start
,可选值如下:
此处的textAlign和css中的text-align
有点区别,css中的text-align
是在父元素上设置,作用在行内元素或者行内块元素上,而此处并没有父元素,直接设置在CanvasRenderingContext2D上,表示方式位设置的对齐方式是设置在人本内容上的start/end/left/right/center,例如:
使用方式如下:
ctx.textAlign = "left";
设置文本的垂直对齐方式,默认对齐方式是 alphabetic
,可选值如下:
看文字有点枯燥而且不具体,看看下面这个图(from the WHATWG)展示了textBaseline属性支持的不同的基线情况:
由于默认对齐方式是alphabetic
,所以当我们不设置y坐标(即为0)时,几乎看不到文字,不过我们如果想按照左上角坐标可以设置为top,如下:
ctx.textBaseline = "top";
绘制文本时,描述当前文本方向的属性,默认值:inherit
,可选值如下:
但好像浏览器兼容性不太好,看MDN上说Chrome是已经实现了,访问chrome://flags 进行设置,可我好像设置了也没起作用。
measureText()方法返回一个 TextMetrics 对象,包含关于文本尺寸的信息(例如文本的宽度)。
例如:
var text = ctx.measureText("樊小书生");
text.width;
有了预测量文本宽度我们就可以做很多事,例如事先知道一段字符在canvas中是否可以绘制的下。