You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何其中一条线条颜色显示异常?Canvas绘图问题求助

问题原因

Canvas 2D上下文的绘图基于路径累积机制:第一次调用drawLines时,添加了第一条线的路径并完成描边;第二次调用时未重置路径,新的线条路径会被追加到已有路径中,调用stroke()时会把所有累积的路径(两条线)都用当前的strokeStyle(红色)重新描边,导致原本的蓝线被覆盖。

解决方案

在每次绘制线条前,调用ctx.beginPath()重置路径,确保每次绘制的都是独立路径,不会互相干扰。

修正后的JavaScript代码

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

let line1 = {
  P1: {
    x: 90,
    y: 50
  },
  P2: {
    x: 110,
    y: 10
  },
  color: "blue",
};
let line2 = {
  P1: {
    x: 10,
    y: 150
  },
  P2: {
    x: 80,
    y: 130
  },
  color: "red",
};

drawLines(line1);
drawLines(line2);


function drawLines(line) {
  ctx.beginPath(); // 重置路径,避免路径累积
  ctx.strokeStyle = line.color;
  ctx.moveTo(line.P1.x, line.P1.y);
  ctx.lineTo(line.P2.x, line.P2.y);
  ctx.stroke();
}

HTML代码(无需修改)

<canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"></canvas>

内容的提问来源于stack exchange,提问作者Gerard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:35:12