CanvasRenderingContext2D:stroke() 方法
基线 广泛可用
此功能已经建立并且可在许多设备和浏览器版本中使用。它自 2015 年 7 月.
报告反馈
Canvas 2D API 的 CanvasRenderingContext2D.stroke()
方法使用当前描边样式描边(轮廓)当前或给定路径。
描边与路径的中心对齐;换句话说,描边的一半绘制在内侧,一半绘制在外侧。
语法
描边使用 非零缠绕规则 绘制,这意味着路径交叉点仍将被填充。
stroke()
stroke(path)
js
参数
-
path
要描边的 Path2D
路径。
返回值
示例
无 (undefined
).
一个简单的描边矩形
HTML
此示例使用
rect()
方法创建一个矩形,然后使用 stroke()
将其绘制到画布上。<canvas id="canvas"></canvas>
JavaScript
描边使用 非零缠绕规则 绘制,这意味着路径交叉点仍将被填充。
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.rect(10, 10, 150, 100);
ctx.stroke();
html
结果
重新描边路径
HTML
此示例使用
rect()
方法创建一个矩形,然后使用 stroke()
将其绘制到画布上。<canvas id="canvas"></canvas>
JavaScript
通常,您需要为要描边的每个新对象调用 beginPath()
。如果您没有这样做,之前的子路径将保留为当前路径的一部分,并且每次调用 stroke()
方法时都会被描边。但是,在某些情况下,这可能是预期效果。
描边使用 非零缠绕规则 绘制,这意味着路径交叉点仍将被填充。
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// First sub-path
ctx.lineWidth = 26;
ctx.strokeStyle = "orange";
ctx.moveTo(20, 20);
ctx.lineTo(160, 20);
ctx.stroke();
// Second sub-path
ctx.lineWidth = 14;
ctx.strokeStyle = "green";
ctx.moveTo(20, 80);
ctx.lineTo(220, 80);
ctx.stroke();
// Third sub-path
ctx.lineWidth = 4;
ctx.strokeStyle = "pink";
ctx.moveTo(20, 140);
ctx.lineTo(280, 140);
ctx.stroke();
html
此代码对第一条路径描边三次,对第二条路径描边两次,对第三条路径只描边一次。
描边和填充
HTML
此示例使用
rect()
方法创建一个矩形,然后使用 stroke()
将其绘制到画布上。<canvas id="canvas"></canvas>
JavaScript
描边使用 非零缠绕规则 绘制,这意味着路径交叉点仍将被填充。
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.lineWidth = 16;
ctx.strokeStyle = "red";
// Stroke on top of fill
ctx.beginPath();
ctx.rect(25, 25, 100, 100);
ctx.fill();
ctx.stroke();
// Fill on top of stroke
ctx.beginPath();
ctx.rect(175, 25, 100, 100);
ctx.stroke();
ctx.fill();
html
规范
如果您想要描边和填充路径,则执行这些操作的顺序将决定结果。在此示例中,左侧的正方形使用描边在填充的顶部绘制。右侧的正方形使用填充在描边的顶部绘制。 |
---|
规范 # HTML 标准 |
浏览器兼容性
dom-context-2d-stroke-dev
另请参阅
- 定义此方法的接口:
CanvasRenderingContext2D