![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=1738863783-6NC5FhdrVFEUnmQmTNb6k9U2d5011FIH-0-2acab45c930fe4313721cd80e7915c8c)
视频讲解
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=1738863783-9DGEvRMYdjhovKDCtWtRYbnEgShkCiTX-0-d75b1ff06ba39de4d53c777b056014ad)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6754.jpg?sign=1738863783-Ywd4BxdB357m7nT4LN143dgZp3BPp803-0-5c8d36db57d37ac8e277bf505abb3600)
图4.42 绘制填充文字
4.6.2 轮廓文字
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P124_6857.jpg?sign=1738863783-2GU4lrWbFlvho4hUyRjMnAaWEm3dPBFx-0-6663df1dd769745e412e228b79b51ecd)
视频讲解
使用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=1738863783-67AJbojtzY9L8h23epuhTei8CnksPQUd-0-67c1de5c5abf359e6e242117637db718)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6878.jpg?sign=1738863783-Venip3xAiiSiQt4nNtngHiUzlKL1JlYK-0-1f8b9518c15106aa96d592789efff950)
图4.43 绘制轮廓文字
4.6.3 文本样式
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P125_6946.jpg?sign=1738863783-wZp9LZWXoIDLkI7ZLnrTAFUWDv14NCAj-0-431f7956a4e63dee82501acac990d232)
视频讲解
下面简单介绍文本样式的相关属性。
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=1738863783-Amq3wri4xDZtIUVr1YmcwTaXoFcRvEIE-0-12dd3a3e4bd762d17e3ba7e85928d600)
【示例2】下面示例在y轴100px的位置创建一条水平线。位置100就被定义为用蓝色填充的矩形。然后比较每种textBaseline属性值对齐效果,如图4.45所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_78432.jpg?sign=1738863783-C8rYgSUWZCqMmcpYVqnyY11N7OVu5h3m-0-87794fe880d5366fa99dfc44d0429529)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7150.jpg?sign=1738863783-GQXOTWkkKFcPvqQkBDa1Nii7WHgVyD6s-0-46bd15c40ecb74ff163cf2ba281793ef)
图4.44 比较每种textAlign属性值对齐效果
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7151.jpg?sign=1738863783-4sUz4wFhvJx5P0aAYgXyda9pbFHkLi7E-0-a7e18af27073fe2aabb31a18486c2642)
图4.45 比较每种textBaseline属性值对齐效果
4.6.4 测量宽度
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P126_7156.jpg?sign=1738863783-YFF4RnVLDweGHBhTIdH8jxey5Cdon5eN-0-aa553ba1c467b018e270281c775e6950)
视频讲解
使用measureText()方法可以测量当前所绘制文字中指定文字的宽度,它返回一个TextMetrics对象,使用该对象的width属性可以得到指定文字参数后所绘制文字的总宽度,其用法如下。
metrics=context. measureText(text);
其中的参数text为要绘制的文字。
提示:如果需要在文本向画布输出之前就了解文本的宽度,应该使用该方法。
【示例】下面是测量文字宽度的一个示例,预览效果如图4.46所示。
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_78435.jpg?sign=1738863783-RiFz3Xg5ER4M3oh1pBCTFrYhVPxGEivW-0-bcce9cc298140bb0d98eee193326e999)
![](https://epubservercos.yuewen.com/1B54E6/13043253503832006/epubprivate/OEBPS/Images/Figure-P127_7276.jpg?sign=1738863783-pKzAPl0x6azNMHzvrFe85CSlxqHulsHP-0-2956d380622b930a89594f35f67fb114)
图4.46 测量文字宽度