canvas文本

421 阅读2分钟

前言

课件地址

github.com/buglas/canv…

课堂目标

1.理解文本的属性和绘制方法。

2.可以灵活熟练的绘制文本。

知识点

  1. 文本的属性
  2. 文本的绘制方法

1-文本的属性

文本的属性有3 种:

  • 字体:font
  • 水平对齐: textAlign
  • 垂直对齐:textBaseline

1-1-font 字体

canvas 里的font 属性和css 的font 属性是一样的,它可以设置文本的粗细、字号、字体等。

  • css 设置字体:p{font:bold 18px serif;}
  • canvas 设置字体:ctx.font=‘bold 18px serif’

更多参数可参考css MDN:developer.mozilla.org/zh-CN/docs/…

1-2-textAlign 水平对齐

下方文字的x 位置都是一样,都是垂直虚线的x 位置,它们的textAlign 属性各不相同。

image-20220412185537991

代码示例:

ctx.textAlign='start';
ctx.fillText('start',300,100);

ctx.textAlign='left';
ctx.fillText('left',300,150);

ctx.textAlign='end';
ctx.fillText('end',300,200);

ctx.textAlign='right';
ctx.fillText('right',300,250);

ctx.textAlign='center';
ctx.fillText('center',300,300);
  • start:文本起始位对齐
  • left:文本左对齐
  • end:文本结束位置对齐
  • right:文本右对齐
  • center:文本居中对齐

注:start和left 的差异在文本的阅读方向dir

  • html 文本默认自左向右读:
<html dir='ltr'>
  • 当html 文本自右向左读时,start和left便会发生改变:
<html dir='rtl'>

image-20220412190506835

1-3-textBaseline 垂直对齐

image-20220412190750148

alphabetic默认。标准字母基线对齐
top上对齐
hanging悬挂基线对齐
middle垂直居中
ideographic表意基线对齐
bottom下对齐

代码示例:

ctx.textBaseline='top';
ctx.fillText('top',100,200);

ctx.textBaseline='middle';
ctx.fillText('middle',200,200);

ctx.textBaseline='bottom';
ctx.fillText('bottom',300,200);

ctx.textBaseline='alphabetic';
ctx.fillText('alphabetic',400,200);

2-绘制文本的方法

文本的绘制方法有2种:

  • 填充文字 fillText(text, x, y , maxWidth)
  • 描边文字 strokeText(text, x, y , maxWidth)

除此之外,还有一个方法可以获取文本的宽度:measureText(text)

示例代码:

//文字内容
const text='好好学习';
//字体
ctx.font='100px arial';
//描边宽度
ctx.lineWidth=3;
//描边色
ctx.strokeStyle='red';
//填充文字
ctx.fillText(text,100,300);
//描边文字
ctx.strokeText(text,100,300);

效果如下:

image-20220412192419725