Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 画布内笔划_Html_Canvas - Fatal编程技术网

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();