strokeText()方法

在Canvas中,我们可以使用strokeText()方法来绘制“描边文本”。“描边文本”是指空心的文本。

语法:

strokeText(text,x,y,maxWidth);

说明:

参数text是一个字符串文本。

参数x表示文本的x坐标,也就是文本最左边的坐标。

参数y表示文本的y坐标,也就是文本最下边的坐标(注意是最下边,而不是最上边)。

参数maxWidth是可选参数,表示允许的最大文本的宽度(单位为px)。如果文本宽度超出maxWidth值,文本会压缩至maxWidth值的宽度。

看下面一段代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>strokeText()方法</title>
    <script>
        function $(id){
            return document.getElementById(id);
        }
        window.οnlοad=function(){
            var cnv=$('canvas');
            var cxt=cnv.getContext("2d");

            var txt='伟大的祖国';
            cxt.font='bold 30px 微软雅黑';  //注意是cxt.font而不是txt.font
            cxt.strokeStyle='skyblue';
            cxt.strokeText(txt,30,60);
        };
    </script>
</head>
<body>
    <canvas id="canvas" width=200 height=150 style="border:1px solid grey;"></canvas>
</body>
</html>

浏览器预览效果图如下:


当cxt.strokeText(txt,30,60);改为cxt.strokeText(txt,30,60,100),也就是为strokeText()方法添加maxWidth参数后,在浏览器中的效果预览图如下,可以看出文本已经被压缩了:


### HTML5 Canvas 基本方法概述 HTML5 中的 `<canvas>` 元素提供了一个可以通过 JavaScript 进行绘制的区域。以下是常用的 Canvas API 方法及其功能说明: #### 创建画布并获取上下文 要使用 Canvas 绘制图形,首先需要创建一个 `<canvas>` 元素,并通过 `getContext('2d')` 获取其绘图环境。 ```html <canvas id="myCanvas" width="500" height="300"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); // 获取 2D 上下文 </script> ``` #### 设置样式和颜色 可以设置填充颜色、描边颜色以及全局透明度等属性。 - **fillStyle**: 设置填充颜色。 - **strokeStyle**: 设置线条颜色。 - **globalAlpha**: 设置全局透明度。 ```javascript ctx.fillStyle = 'blue'; // 设置填充颜色为蓝色[^1] ctx.strokeStyle = 'red'; // 设置线条颜色为红色 ctx.globalAlpha = 0.5; // 设置半透明效果 ``` #### 绘制矩形 Canvas 提供了几种用于绘制矩形的方法: - **fillRect(x, y, width, height)**: 绘制一个填充矩形。 - **strokeRect(x, y, width, height)**: 绘制一个矩形轮廓。 - **clearRect(x, y, width, height)**: 清除指定矩形区域的内容。 ```javascript ctx.fillRect(50, 50, 150, 100); // 绘制一个填充矩形 ctx.strokeRect(70, 70, 100, 80); // 绘制一个矩形轮廓 ctx.clearRect(90, 90, 50, 40); // 清除部分矩形内容 ``` #### 绘制路径 路径是由多个子路径组成的形状,通常由直线或曲线构成。 - **beginPath()**: 开始一条新路径。 - **moveTo(x, y)**: 将笔触移动到指定位置而不绘制任何东西。 - **lineTo(x, y)**: 添加一条从当前点到目标点的线段。 - **closePath()**: 关闭路径并将终点连接回起点。 - **stroke()**: 描边路径。 - **fill()**: 填充路径。 ```javascript ctx.beginPath(); // 开始新的路径 ctx.moveTo(100, 100); // 移动到起始点 (100, 100) ctx.lineTo(200, 100); // 添加水平线段至 (200, 100) ctx.lineTo(150, 200); // 添加斜线段至 (150, 200) ctx.closePath(); // 自动关闭路径 ctx.stroke(); // 描边路径 ctx.fill(); // 填充路径 ``` #### 绘制圆弧和椭圆 - **arc(x, y, radius, startAngle, endAngle, anticlockwise?)**: 绘制一段圆弧。 - **ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise?)**: 绘制椭圆形。 ```javascript ctx.beginPath(); ctx.arc(250, 150, 50, 0, Math.PI * 2, false); // 绘制一个完整的圆 ctx.stroke(); ctx.beginPath(); ctx.ellipse(350, 150, 60, 30, Math.PI / 4, 0, 2 * Math.PI, true); // 绘制旋转后的椭圆 ctx.stroke(); ``` #### 文字处理 可以在 Canvas 上渲染文字。 - **fillText(text, x, y)**: 使用填充方式显示文字。 - **strokeText(text, x, y)**: 使用描边方式显示文字。 - **font**: 定义字体大小和风格。 - **textAlign**: 对齐方式(left, center, right)。 - **textBaseline**: 基准线调整(top, middle, bottom)。 ```javascript ctx.font = '30px Arial'; // 设置字体 ctx.textAlign = 'center'; // 居中文本 ctx.fillText('Hello World', 250, 150); // 显示填充文本 ctx.strokeText('Hello World', 250, 200); // 显示描边文本 ``` #### 图像操作 支持加载外部图像并在 Canvas 上展示。 - **drawImage(image, dx, dy, dw, dh)**: 在指定坐标处绘制图片。 ```javascript const img = new Image(); img.src = 'example.jpg'; img.onload = function () { ctx.drawImage(img, 0, 0, 200, 100); // 缩放后绘制图片 }; ``` #### 变换与保存状态 - **translate(x, y)**: 平移原点。 - **rotate(angle)**: 顺时针旋转角度。 - **scale(x, y)**: 放缩比例。 - **save() 和 restore()**: 保存和恢复当前绘图状态。 ```javascript ctx.save(); // 保存当前状态 ctx.translate(250, 150); ctx.rotate(Math.PI / 4); ctx.scale(0.5, 0.5); ctx.fillRect(-50, -50, 100, 100); // 绘制变换后的矩形 ctx.restore(); // 恢复之前的状态 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值