Canvas——文字绘制

本文介绍了如何在HTML5Canvas中绘制文字,包括设置字体、调整文字对齐方式、基线对齐和测量文本宽度。示例代码演示了fillText和strokeText方法的使用,以及如何控制文本的显示效果和布局。
摘要由CSDN通过智能技术生成

文字绘制

画笔.font = "字体大小 字体"
画笔.fillText =(文字内容,x1 ,y1, w) :x1,y1: 内容的起点; w:内容所占据的最大宽度,超出该宽度会进行压缩
画笔.strokeText = (文字内容,x1 ,y1, w):和fillText的参数一样

eg:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--  -->
    <canvas
    id = "canvas1"
    width="1000"
    height="600"
    style="background: lightgray"
    ></canvas>
    <script>
        // 找到画布
        var canvas1 = document.getElementById("canvas1")
        var ctx = canvas1.getContext("2d")

        ctx.font = "100px Microsoft YaHei"
        ctx.fillText("洋", 200, 200, 100)
        ctx.strokeText("洋", 300, 200, 100)
    </script>
</body>
</html>

在这里插入图片描述

文字样式

  • 水平对齐:画笔.textAlign = 对齐方式,对齐方式: "center"、"start"(默认)、"end"、"left"、"right"
    注意这里对齐的参照是通过strokeText("文字",x1,y1)函数设置的定点(x1,y1)

eg:center样式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--  -->
    <canvas
    id = "canvas1"
    width="1000"
    height="600"
    style="background: lightgray"
    ></canvas>
    <script>
        // 找到画布
        var canvas1 = document.getElementById("canvas1")
        var ctx = canvas1.getContext("2d")

        ctx.font = "100px Microsoft YaHei"
        ctx.textAlign = "center"
        ctx.strokeText("yang", 300, 300)

        ctx.arc(300,300,5,0,2*Math.PI)
        ctx.fillStyle = "red"
        ctx.fill()
    </script>
</body>
</html>

在这里插入图片描述

  • 基线对齐:画笔.textBaseline= 对齐方式,对齐方式: "top"、"bottom"、"middle"、"alphabetic"(文本基线对齐,默认)
  • 文本方向:画笔.direction = 方向, 方向:"ltr"(从左到右)、"rtl"(从右到左)

文本宽度

预测量文本宽度:
画笔.measureText("文字")
eg:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!--  -->
    <canvas
    id = "canvas1"
    width="1000"
    height="600"
    style="background: lightgray"
    ></canvas>
    <script>
        // 找到画布
        var canvas1 = document.getElementById("canvas1")
        var ctx = canvas1.getContext("2d")

        ctx.font = "100px Microsoft YaHei"
        ctx.textAlign = "center"
        ctx.textBaseline = "middle"
        ctx.direction = "rtl"
        ctx.strokeText("yang", 300, 300)

        // 预测量文本宽度
        const msg = ctx.measureText("yang")
        console.log(msg);

        ctx.arc(300,300,5,0,2*Math.PI)
        ctx.fillStyle = "red"
        ctx.fill()
    </script>
</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值