![HTML5+CSS3从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/697/24172697/b_24172697.jpg)
4.6 绘制文本
使用fillText()和strokeText()方法,可以分别以填充方式和轮廓方式绘制文本。
4.6.1 填充文字
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P123_6678.jpg?sign=1738831375-oReZPHFrYPNbHOsoyHLZtGI121mHwETM-0-1b51e4c14f2ca19c6507fcbe5e1c7f11)
视频讲解
fillText()方法能够在画布上绘制填色文本,默认颜色是黑色。其用法如下。
context.fillText(text,x,y,maxWidth);
参数说明如下:
text:规定在画布上输出的文本。
x:开始绘制文本的x坐标位置(相对于画布)。
y:开始绘制文本的y坐标位置(相对于画布)。
maxWidth:可选。允许的最大文本宽度,以像素计。
【示例】下面使用fillText()方法在画布上绘制文本“Hi”和“Canvas API”,效果如图4.42所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P123_78425.jpg?sign=1738831375-tHmBXkebuM7XvENSK9lJGcU4MgDxCohR-0-35ed7ce866bfef0f5a6dbe266f12aa5f)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6754.jpg?sign=1738831375-fm82Gkrmi1VrXddZh5auOv3xYInRmVwX-0-9dc43f9351ff71e48ab42a44ddef1c63)
图4.42 绘制填充文字
4.6.2 轮廓文字
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6857.jpg?sign=1738831375-h4gckQifAP6gs2dORKre7a3WLGzJvRMd-0-da10b287f512d5bc500e76af142d253b)
视频讲解
使用strokeText()方法可以在画布上绘制描边文本,默认颜色是黑色。其用法如下。
context.strokeText(text,x,y,maxWidth);
参数说明如下:
text:规定在画布上输出的文本。
x:开始绘制文本的x坐标位置(相对于画布)。
y:开始绘制文本的y坐标位置(相对于画布)。
maxWidth:可选。允许的最大文本宽度,以像素计。
【示例】下面使用strokeText()方法绘制文本“Hi”和“Canvas API”,效果如图4.43所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_78427.jpg?sign=1738831375-rYDpevkmvM4jM4lp16b2hFn4Dblt7LRD-0-a5d2984887ad0a2a8d9bd9fe94868cd8)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6878.jpg?sign=1738831375-X6SCD31MNFW9yuuZkSUnqOgk2wwiZMJT-0-da988ea1c8d5d260a7497a135b246054)
图4.43 绘制轮廓文字
4.6.3 文本样式
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6946.jpg?sign=1738831375-zrirLXf4L9jvUlZKQYUKOxXFtKwgvLR1-0-4fac516d8deb86f77a5b2749543fcfff)
视频讲解
下面简单介绍文本样式的相关属性。
font:定义字体样式,语法与CSS字体样式相同。默认字体样式为10px sans-serif。
textAlign:设置正在绘制的文本水平对齐方式。取值说明如下:
start:默认,文本在指定的位置开始。
end:文本在指定的位置结束。
center:文本的中心被放置在指定的位置。
left:文本左对齐。
right:文本右对齐。
textBaseline:设置正在绘制的文本基线对齐方式,即文本垂直对齐方式。取值说明如下:
alphabetic:默认值,文本基线是普通的字母基线。
top:文本基线是em方框的顶端。
hanging:文本基线是悬挂基线。
middle:文本基线是em方框的正中。
ideographic:文本基线是表意基线。
bottom:文本基线是em方框的底端。
提示:大部分浏览器尚不支持hanging和ideographic属性值。
direction:设置文本方向。取值说明如下:
ltr:从左到右。
rtl:从右到左。
inherit,默认值,继承文本方向。
【示例1】下面示例在x轴150px的位置创建一条竖线。位置150就被定义为所有文本的锚点。然后比较每种textAlign属性值对齐效果,如图4.44所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_78429.jpg?sign=1738831375-OeOZU6x20U7pzwGLEOSNIVxEIm5kyCoW-0-80c1cc22c227095777edc0215aeb433e)
【示例2】下面示例在y轴100px的位置创建一条水平线。位置100就被定义为用蓝色填充的矩形。然后比较每种textBaseline属性值对齐效果,如图4.45所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_78432.jpg?sign=1738831375-UUsrSDX5VzjlPMH1tZrx3rFprCEi93CT-0-91158fba14e19c2a819ebb3774e984b8)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7150.jpg?sign=1738831375-j3wW5MMkYQgWZ4JZHnxI05I1GpgLBbr2-0-95b60f1ceb3730fbf2e953adee5b2a7d)
图4.44 比较每种textAlign属性值对齐效果
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7151.jpg?sign=1738831375-Z8vCCQMhzTE4AHLnmg9ywhgIzZIfF5kn-0-3e10d3843fd8059a3936f1ad23099246)
图4.45 比较每种textBaseline属性值对齐效果
4.6.4 测量宽度
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7156.jpg?sign=1738831375-Q7cWb9G0ytpTSru5UD5v44776x9N4Pee-0-bdfa19078130bbc9269883fea22e9ae7)
视频讲解
使用measureText()方法可以测量当前所绘制文字中指定文字的宽度,它返回一个TextMetrics对象,使用该对象的width属性可以得到指定文字参数后所绘制文字的总宽度,其用法如下。
metrics=context. measureText(text);
其中的参数text为要绘制的文字。
提示:如果需要在文本向画布输出之前就了解文本的宽度,应该使用该方法。
【示例】下面是测量文字宽度的一个示例,预览效果如图4.46所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_78435.jpg?sign=1738831375-r9H1sGpKLy4WCIYTz59aBAMF1vs4wGrQ-0-f3517277234124a1e1960b8eb99f760b)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_7276.jpg?sign=1738831375-el90ZfLhM0Pa5frigjFOQrWakBJSOjcm-0-a1af9728470a3b4e4d41e6bd339a91e9)
图4.46 测量文字宽度