Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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
Javascript 画布多边形边框被裁剪_Javascript_Html_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 画布多边形边框被裁剪

Javascript 画布多边形边框被裁剪,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,当我将线宽设置为大于1时,将显示裁剪的线条。 考虑到定义的线宽,我想知道如何在画布尺寸中显示多边形而不进行裁剪。 提前谢谢 var c=document.getElementById(“myCanvas”); var ctx=c.getContext(“2d”); 变量多边形=[ {x:178,y:160},{x:124,y:0},{x:265,y:88}, {x:382,y:0},{x:393,y:118},{x:770,y:178}, {x:479,y:221},{x:441,y:228}

当我将线宽设置为大于1时,将显示裁剪的线条。 考虑到定义的线宽,我想知道如何在画布尺寸中显示多边形而不进行裁剪。 提前谢谢

var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
变量多边形=[
{x:178,y:160},{x:124,y:0},{x:265,y:88},
{x:382,y:0},{x:393,y:118},{x:770,y:178},
{x:479,y:221},{x:441,y:228},{x:579,y:376},
{x:309,y:314},{x:197,y:428},{x:183,y:304},
{x:0,y:324},{x:132,y:240},{x:36,y:152}
];
ctx.strokeStyle=“rgba(46,139,86,1.00)”;
ctx.fillStyle=“rgba(156205,50,1.00)”;
ctx.lineWidth=9;
ctx.beginPath();
移动到(多边形[0].x,多边形[0].y);

对于(var i=1;i那么您正试图将其保持在画布的边界内?如果是这样,您可以使用将当前
线宽加倍并在该点填充/笔划,从而将其保持在画布的边界内。默认的剪辑算法不允许点填充到画布之外,这使得该算法始终适用于r画布边界

下面的例子

var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
变量多边形=[
{x:178,y:160},{x:124,y:0},{x:265,y:88},
{x:382,y:0},{x:393,y:118},{x:770,y:178},
{x:479,y:221},{x:441,y:228},{x:579,y:376},
{x:309,y:314},{x:197,y:428},{x:183,y:304},
{x:0,y:324},{x:132,y:240},{x:36,y:152}
];
ctx.strokeStyle=“rgba(46,139,86,1.00)”;
ctx.fillStyle=“rgba(156205,50,1.00)”;
常数线宽=9;
ctx.lineWidth=线宽;
ctx.beginPath();
移动到(多边形[0].x,多边形[0].y);

对于(var i=1;我感谢你!它解决了我的问题;)我没有意识到关于clip算法的行为。