【canvas】canvas基础使用(十):文本样式

简言

canvas上下文有一些属性可以更改文本的样式。

文本样式

font 字体设置

CanvasRenderingContext2D.font 是 Canvas 2D API 描述绘制文字时,当前字体样式的属性。使用和 CSS font 规范相同的字符串值。
语法:
ctx.font = value;
选项:

  • value
    符合 CSS font 语法的DOMString 字符串。默认字体是 10px sans-serif。font语法

示例

 const canvas1 = document.getElementById('canvas1');
      if (canvas1.getContext) {
        const ctx = canvas1.getContext('2d')
        ctx.font = "small-caps bold 24px/1 sans-serif";
        ctx.fillText("Hello world", 10, 50);
        ctx.strokeText("Hello world", 10, 70);
        const text = ctx.measureText("Hello world")

        console.log(text);

      }

在这里插入图片描述

textAlign 文本对齐设置

CanvasRenderingContext2D.textAlign 是 Canvas 2D API 描述绘制文本时,文本的对齐方式的属性。注意,该对齐是基于 CanvasRenderingContext2D.fillText 方法的 x 的值。
语法:
ctx.textAlign = “left” || “right” || “center” || “start” || “end”;
选项值:

  • left
    文本左对齐。

  • right
    文本右对齐。

  • center
    文本居中对齐。

  • start
    文本对齐界线开始的地方(左对齐指本地从左向右,右对齐指本地从右向左)。

  • end
    文本对齐界线结束的地方(左对齐指本地从左向右,右对齐指本地从右向左)。

默认值是 start。

示例

const canvas = document.getElementById("canvas");
canvas.width = 350;
const ctx = canvas.getContext("2d");
const x = canvas.width / 2;

ctx.beginPath();
ctx.moveTo(x, 0);
ctx.lineTo(x, canvas.height);
ctx.stroke();

ctx.font = "30px serif";

ctx.textAlign = "left";
ctx.fillText("left-aligned", x, 40);

ctx.textAlign = "center";
ctx.fillText("center-aligned", x, 85);

ctx.textAlign = "right";
ctx.fillText("right-aligned", x, 130);

在这里插入图片描述

textBaseline 基线对齐设置

CanvasRenderingContext2D.textBaseline 是 Canvas 2D API 描述绘制文本时,当前文本基线的属性。

相当于垂直方向的对齐

语法:
ctx.textBaseline = “top” || “hanging” || “middle” || “alphabetic” || “ideographic” || “bottom”;
选项值:

  • top
    文本基线在文本块的顶部。

  • hanging
    文本基线是悬挂基线。

  • middle
    文本基线在文本块的中间。

  • alphabetic
    文本基线是标准的字母基线。

  • ideographic
    文字基线是表意字基线;如果字符本身超出了 alphabetic 基线,那么 ideograhpic 基线位置在字符本身的底部。

  • bottom
    文本基线在文本块的底部。与 ideographic 基线的区别在于 ideographic 基线不需要考虑下行字母。

默认值是 alphabetic。

示例

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

const baselines = [
  "top",
  "hanging",
  "middle",
  "alphabetic",
  "ideographic",
  "bottom",
];
ctx.font = "36px serif";
ctx.strokeStyle = "red";

baselines.forEach((baseline, index) => {
  ctx.textBaseline = baseline;
  const y = 75 + index * 75;
  ctx.beginPath();
  ctx.moveTo(0, y + 0.5);
  ctx.lineTo(550, y + 0.5);
  ctx.stroke();
  ctx.fillText(`Abcdefghijklmnop (${baseline})`, 0, y);
});

在这里插入图片描述

direction 文本绘制方向

CanvasRenderingContext2D.direction 是 Canvas 2D API 用来在绘制文本时,描述当前文本方向的属性。
语法:
ctx.direction = “ltr” || “rtl” || “inherit”;
选项值:

  • ltr
    文本方向从左向右。

  • rtl
    文本方向从右向左。

  • inherit
    根据情况继承 元素或者 Document 。

默认值是 inherit。中国区域默认是ltr书写方向。

示例

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

ctx.font = "48px serif";
ctx.fillText("Hi!", 150, 50);
ctx.direction = "rtl";
ctx.fillText("Hi!", 150, 130);

在这里插入图片描述

结语

结束了。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZSK6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值