便签箭头用二次贝塞尔曲线平滑过渡到主体

This commit is contained in:
2026-09-19 17:36:33 +08:00
parent d327ab5bc1
commit 46c6d2f34a
+10 -3
View File
@@ -77,8 +77,11 @@ function makeStickyNote(text, fontSize, selected = false) {
// 箭头 + 圆角矩形一体化路径(箭头尖端在 (ox, oy + h/2),指向坐标) // 箭头 + 圆角矩形一体化路径(箭头尖端在 (ox, oy + h/2),指向坐标)
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(ox, oy + h / 2); ctx.moveTo(ox, oy + h / 2);
ctx.lineTo(ox + arrowW, oy + h / 2 - arrowH / 2); // 上侧:平滑曲线从尖端连到左上角
ctx.lineTo(ox + arrowW, oy + radius); ctx.quadraticCurveTo(
ox + arrowW * 0.7, oy + h / 2 - arrowH / 2,
ox + arrowW, oy + radius,
);
ctx.arcTo(ox + arrowW, oy, ox + arrowW + radius, oy, radius); ctx.arcTo(ox + arrowW, oy, ox + arrowW + radius, oy, radius);
ctx.lineTo(ox + w - radius, oy); ctx.lineTo(ox + w - radius, oy);
ctx.arcTo(ox + w, oy, ox + w, oy + radius, radius); ctx.arcTo(ox + w, oy, ox + w, oy + radius, radius);
@@ -86,7 +89,11 @@ function makeStickyNote(text, fontSize, selected = false) {
ctx.arcTo(ox + w, oy + h, ox + w - radius, oy + h, radius); ctx.arcTo(ox + w, oy + h, ox + w - radius, oy + h, radius);
ctx.lineTo(ox + arrowW + radius, oy + h); ctx.lineTo(ox + arrowW + radius, oy + h);
ctx.arcTo(ox + arrowW, oy + h, ox + arrowW, oy + h - radius, radius); ctx.arcTo(ox + arrowW, oy + h, ox + arrowW, oy + h - radius, radius);
ctx.lineTo(ox + arrowW, oy + h / 2 + arrowH / 2); // 下侧:平滑曲线从下边缘连回尖端
ctx.quadraticCurveTo(
ox + arrowW * 0.7, oy + h / 2 + arrowH / 2,
ox, oy + h / 2,
);
ctx.closePath(); ctx.closePath();
if (selected) { if (selected) {