Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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
剪切斜线画布/Javascript?_Javascript_Canvas - Fatal编程技术网

剪切斜线画布/Javascript?

剪切斜线画布/Javascript?,javascript,canvas,Javascript,Canvas,我看了很多教程,目前正试图剪下右上角的部分,但只能剪成一条直线。不是,我一直在想,我该如何去切割这件作品上剩余的倾斜线。我该怎么做呢 这就是我说的那句话: 小提琴: 在新画布上使用“剪辑”方法仅剪切原始画布的一部分 乙二醇 这似乎是一个非常好的答案,但我对这一点非常陌生,不知道如何将其添加到我的代码中。你有没有办法把这个放在小提琴上?这对我帮助很大。只需将它放在img.onload函数中,替换Jctx.drawImage调用,并将ctx替换为Jctx。我很抱歉,如果这让你感到困扰,但我真的不知道

我看了很多教程,目前正试图剪下右上角的部分,但只能剪成一条直线。不是,我一直在想,我该如何去切割这件作品上剩余的倾斜线。我该怎么做呢

这就是我说的那句话:

小提琴:


在新画布上使用“剪辑”方法仅剪切原始画布的一部分

乙二醇


这似乎是一个非常好的答案,但我对这一点非常陌生,不知道如何将其添加到我的代码中。你有没有办法把这个放在小提琴上?这对我帮助很大。只需将它放在
img.onload
函数中,替换
Jctx.drawImage
调用,并将
ctx
替换为
Jctx
。我很抱歉,如果这让你感到困扰,但我真的不知道该怎么做。我尝试用
img.onload=function
更改我的
Jctx.drawImage
。这让我的两张照片都消失了。如果没有坐标(你想要的是馅饼的哪一部分),我无法帮助你,我不知道你需要的是图像的哪一部分img.onload=function()。从每个坐标中减去最左上方的坐标。使用该坐标列表来追踪剪辑路径
moveTo(x,y)
第一点,
lineTo(x,y)
其他点。然后使用负左上角(因为需要将饼图位移动到新图像中)坐标(在减法之前)绘制图像。
Jctx.drawImage(img,-left,-top)
<body>
<canvas id="NewCanvas" height="800" width="800">
</canvas>

</body>
var can=document.getElementById("NewCanvas");
    var Jctx=can.getContext("2d");
    var img = new Image();

    img.onload = function() {
    Jctx.drawImage(img,150,10);
    //drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

    Jctx.drawImage(img,150, 45, 150, 100, 100, 300, 150, 100);
    }
    img.src='http://images.sodahead.com/polls/004087283/3238285773_0912_holiday_pie_slicespreview_answer_103_xlarge.jpeg';
// ctx is the new canvas
ctx.save(); // save the current state
ctx.moveTo(0,0);
ctx.lineTo(150,0);
ctx.lineTo(75,150);
ctx.closePath();
ctx.clip();
ctx.drawImage(img,0,0); // new image is clipped
ctx.restore(); // revert to old state and removes the clip.