【发布时间】:2022-09-27 23:17:46
【问题描述】:
我的画布线条有一个问题是,每当我尝试绘制线条时,它们并不平滑,线条看起来像一堆相互连接的小线条,我尝试使用 quadraticCurveTo 找到解决方案并计算中点线
const draw = (e) => {
if (!isPainting) {
return;
}
const x = e.pageX - canvasOffsetX;
const y = e.pageY - canvasOffsetY;
points.push({ x: x, y: y });
ctx.lineWidth = lineWidth;
ctx.lineCap = \'round\';
ctx.lineJoin = \'round\';
ctx.globalAlpha = opacity;
ctx.imageSmoothingQuality = \"high\";
ctx.beginPath();
if (points.length === 1) {
ctx.moveTo(x, y);
} else {
for (let i = 1, len = points.length; i < len; i++) {
let xc = (points[i].x + points[i + 1].x) / 2;
let yc = (points[i].y + points[i + 1].y) / 2;
ctx.quadraticCurveTo(points[i].x, points[i].y, xc, yc);
}
ctx.stroke();
}
};
这种方法效果很好,但是在鼠标启动后或计算完成后出现线条,这不是最好的方法,我尝试在鼠标启动后更改线条之前画线,但它也不起作用
我能找到的唯一相对答案是这个codepen: https://codepen.io/kangax/pen/kyYrdX
但它的问题是我必须在绘制新线之前清除画布并且我希望所有的图纸都存在
标签: javascript canvas html5-canvas