![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=1739421058-39tORc7SNP9J9pYjaYB5PBis37q7k6BG-0-17bb914654f7b1afe68f60f68ec6fd47)
视频讲解
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=1739421058-LFIXDwaLmsfkqHpdgsJ98Xct5Hnu7bo2-0-f9dae720a48def4935c6aba1aa1d3385)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6754.jpg?sign=1739421058-jMMvStO7izdd8RsFMNad02B3w4vTu2JW-0-0641ec0890270aa2f22b419ad42a4794)
图4.42 绘制填充文字
4.6.2 轮廓文字
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6857.jpg?sign=1739421058-v2WKrHKURobIstpxlOdeVMaUmTenUfW4-0-34dbff4faf229850c62fbe9c6cf80cbe)
视频讲解
使用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=1739421058-odteqfUb5KGvuB8CO3caN241nRZdwt5x-0-57e078056b9a328c7c8c04f109374e83)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6878.jpg?sign=1739421058-6Aq4uuZKXdW0fn8bHRXZM33CTuKjGB6C-0-8a86dfc316c399a8b7aabec3fcbaebff)
图4.43 绘制轮廓文字
4.6.3 文本样式
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6946.jpg?sign=1739421058-fDJJRWrJTynii1GBT8LWS4FBfw73asqH-0-a7976c7673bfe8cee7d25f23ce37c104)
视频讲解
下面简单介绍文本样式的相关属性。
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=1739421058-dmF9CbzMg4XCBZJyfZQuiX4Z1ly2yYIh-0-965a05c11c2028d9663a627158d14bd0)
【示例2】下面示例在y轴100px的位置创建一条水平线。位置100就被定义为用蓝色填充的矩形。然后比较每种textBaseline属性值对齐效果,如图4.45所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_78432.jpg?sign=1739421058-7qetLs27DltqLpMgUG6ftzGCs5xM8zRN-0-be6df7c3743dcd66111accebd4adfbad)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7150.jpg?sign=1739421058-qyif52n6cilg05zYgnPRjCQQOJ83L4ZA-0-1e85d00ce45e1e015ebdfc40eba288d2)
图4.44 比较每种textAlign属性值对齐效果
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7151.jpg?sign=1739421058-xNBHKdnNunBzdyPuqGr8EEWYhLKNCKV3-0-88fc0a85ae46f97e4eac188e66f2f0a7)
图4.45 比较每种textBaseline属性值对齐效果
4.6.4 测量宽度
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7156.jpg?sign=1739421058-X4FYxLySaN7lMLJXo6eG8A0NtJn5G18i-0-f670dc2254be74eb4b88353dc0d55172)
视频讲解
使用measureText()方法可以测量当前所绘制文字中指定文字的宽度,它返回一个TextMetrics对象,使用该对象的width属性可以得到指定文字参数后所绘制文字的总宽度,其用法如下。
metrics=context. measureText(text);
其中的参数text为要绘制的文字。
提示:如果需要在文本向画布输出之前就了解文本的宽度,应该使用该方法。
【示例】下面是测量文字宽度的一个示例,预览效果如图4.46所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_78435.jpg?sign=1739421058-np5CEaF0TfvExCG19S8Rao117jCV0O4b-0-7ea526d2e0176a6e57a47652018ff7cb)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_7276.jpg?sign=1739421058-RKH25UZIUo8WAsU7kgNZHHw7YBKCH90c-0-d7ac6e54f9bd9556408c39174c3b63c3)
图4.46 测量文字宽度