Html 画布内笔划
我研究了一下笔划样式,但我找不到如何从内/中/外控制笔划的位置。看起来所有的笔划都在我画的矩形之外。有没有办法让笔划是内在的?(甚至以矩形边界为中心)Html 画布内笔划,html,canvas,Html,Canvas,我研究了一下笔划样式,但我找不到如何从内/中/外控制笔划的位置。看起来所有的笔划都在我画的矩形之外。有没有办法让笔划是内在的?(甚至以矩形边界为中心) 感谢默认笔划确实使用居中笔划,但不幸的是,没有参数控制笔划的对齐,因此您必须计算矩形位置和大小的偏移值,或者组合两个矩形并使用填充规则,例如偶数: var ctx=c.getContext(“2d”); //默认居中 ctx.线宽=10; ctx.strokeRect(10,10,100,100); ctx.lineWidth=1; ctx.s
感谢默认笔划确实使用居中笔划,但不幸的是,没有参数控制笔划的对齐,因此您必须计算矩形位置和大小的偏移值,或者组合两个矩形并使用填充规则,例如
偶数
:
var ctx=c.getContext(“2d”);
//默认居中
ctx.线宽=10;
ctx.strokeRect(10,10,100,100);
ctx.lineWidth=1;
ctx.strokeStyle=“红色”;
ctx.strokeRect(10,10,100,100);//显示主路径
//内在的
ctx.rect(150,10100100);
ctx.rect(150+10,10+10100-20100-20);//偏移位置和大小
ctx.fill(“偶数”);/!重要的
ctx.strokeRect(150、10、100、100)代码>
此答案“”显示了如何使用遮罩和合成来精确控制笔划的内外偏移,而无需操纵路径。它可以用于任何画布路径,无论多么复杂。希望这有帮助强>
而不是做:
DO:
ctx.save();
ctx.clip();
ctx.lineWidth *= 2;
ctx.fill();
ctx.stroke();
ctx.restore();
编辑
对我来说,我相信这是可行的,因为clip方法删除了已经存在的填充区域周围的任何填充和笔划,这意味着笔划只能放在内部,否则它会被剪掉。非常感谢。我不知道它是默认设置的。这是一个非常有用的解决方案!非常感谢,真的很有趣,我要试试!
ctx.save();
ctx.clip();
ctx.lineWidth *= 2;
ctx.fill();
ctx.stroke();
ctx.restore();