复习
本节之前,我们一直在学习如何在canvas上绘制图形。moveTo和lineTo方法配合使用,我们就能绘制出线条来,同时利用数学方法,我们还能绘制出多种图形来。一些常见的图形,既可以使用线条组合,也可以使用canvas已经提供了的方法,比如 绘制矩形,就有rect方法,fillRect方法,strokeRect方法。绘制圆和圆弧,就有arc方法,arcTo方法。绘制结束时,用fill我们会得到一个填充图形,用stroke我们会得到绘制的线条。
为了能够让绘制出来的东西丰富多彩,我们使用strokeStyle和fillStyle来添加颜色,透明,渐变,图案等。
同时绘制的线条可以使用lineCap,lineWidth,lineJoin, setLineDash等来设置线条的样式。
学习
这节我们来学习使用如何在canvas上写字。
在canvas写字,我们会用到两个方法,fillText(text,x,y, maxwidth)和strokeText(text,x,y, maxwidth()。其中,text是指需要绘制的文字,x,y是指文字开始绘制的起点,需要注意的是,这个是文字左下角的位置,不是左上角,一定要计算好了。maxWidth是指需要绘制的最大宽度,超过这个宽度就不绘制了。其中,maxwidth是可选的。相信通过前面的学习,fillText和stroekText的区别大家都已经知道了,不过这里我还是讲一下。fillText绘制的图形是填充文本,strokeText绘制的图形是文本框文本。具体请看我的示例。
在日常的网页写作中,我们需要设置字体,大小,对齐方式,文本方向等样式。在canvas中,同样需要。
字体大小和字体内容使用font来实现。具体如下
1
font = "100px Microsoft YaHei"
textAlign用来设置文字的对齐方式,可选的值有start,end,left,right, center。 默认值是 start。
textBaseLine基线对齐选项. 可选的值包括:
top
,hanging
,middle
,alphabetic
,ideographic
,bottom
。默认值是alphabetic。
direction 用来设置文本方向。ltr表示文本从左向右展示,rtl表示文本从右向左展示。这时请注意,文本的开始方向是右下角。inherit继承canvas或者相应的dom的2文字方向来确定。
有时后,我们可能需要明确知道文本的长度,这个时候,我们有一个接口,measureText()。它将返回一个对象,包含width,actualBoundingBoxLeft,actualBoundingBoxRight,actualBoundingBoxAscent,actualBoundingBoxDescent四个值,其中width就是文本的宽度。
扩展:在一些地方,我们可能需要测量具体的文本宽度,尤其是中文英文数字混杂在一起时,直接用length+em来显示长度并不是很精准。我们可以尝试着使用measureText方法。
接下来。进入示范,例子代码。
1 | <canvas width="500" height="500" id="mycanvas"></canvas> |
canvas中关于文字的部分,我们就都学完了,下一节开始,我们学习如何将已有图像的绘制和操作。这里的图像的绘制和操作是和之前作为颜料的图像有很大的区别的,在下面的内容中,我们将能够操作图像,做很多事情。