canvas学习--文本操作

449 阅读2分钟

对于文本操作,canvas提供了不少方法和属性

文本操作“方法”

方法说明
fillText()绘制“填充”文本
strokeText()绘制“描边”文本
measureText()用于获取文本的长度(不能绘制文本,只能获取长度)

文本操作“属性”

属性说明
font定义文本字体样式(大小、粗细等)
textAlign定义文本水平对齐方式
textBaseline定义文本水平垂直方式
fillStyle定义画笔“填充”路径的颜色
strokeStyle定义画笔“描边”路径的颜色

strokeText()方法

语法:

strokeText(text , x , y , maxWidth)

参数text是一个字符串文本,参数x表示文本最左边的坐标,参数y表示文本最下边的坐标,参数maxWidth可选,表示允许的最大文本宽度(单位px),如果文本超出maxWidth,文本会压缩至maxWidth

fillText()方法

语法:

fillText(text , x , y , maxWidth)

参数text是一个字符串文本,参数x表示文本最左边的坐标,参数y表示文本最下边的坐标,参数maxWidth可选,表示允许的最大文本宽度(单位px),如果文本超出maxWidth,文本会压缩至maxWidth

measureText()方法

语法:

let length = cxt.measureText(text).width

参数text是一个字符串文本,measureText().width返回文本的长度,单位px。(measureText()方法返回一个对象,且这个对象只有一个width属性)

预备代码如下:

<!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 = "canvas" width = "300" height = "300" style = "border: 1px dashed gray;"></canvas>
</body>

<script>
    window.onload = function() {
        //写逻辑
    }
</script>
</html>

效果图如下:

image.png

let canvas = document.getElementById('canvas');
let cxt = canvas.getContext('2d');

let text = "笨笨狗吞噬者";
cxt.font = "bold 20px 楷体";  
let len = cxt.measureText(text).width;
let width = canvas.width;
let x =  width / 2 - len / 2;  // 实现水平居中
        
cxt.strokeStyle = "red";
cxt.strokeText(text,x,100);

cxt.fillStyle = "yellow";
cxt.fillText(text,x,100);

效果图如下:

image.png

font属性

HTML5 canvas font 属性 (w3school.com.cn)

textAlign属性

HTML canvas textAlign 属性 (w3school.com.cn)

textBaseline属性

HTML canvas textBaseline 属性 (w3school.com.cn)

封面制作网站 ColorFu
文章内容参考莫振杰 著《HTML5 CANVAS开发详解》,感兴趣的同学可以阅读一下这本书,如有错误,欢迎指正!!