gpt4 book ai didi

javascript - html Canvas 中的蒙版图像

转载 作者:行者123 更新时间:2023-12-03 12:02:54 59 4
gpt4 key购买 nike

当鼠标进入 Canvas 时,我试图将 mask 更改为 html5 Canvas 中的图像。当鼠标进入 Canvas 时,我绘制一个形状作为 mask 。它按照我想要的方式绘制,但不会掩盖图像。

绘制 mask 的函数是drawLine();这里出了什么问题?

var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var img = document.createElement('IMG');
var mY;
var mX;

img.onload = function () {
context.save();
context.beginPath();
context.moveTo(0, 0);
context.lineTo(160, 600);
context.rect(0, 0, 160, 600);
context.closePath();
context.clip();
context.drawImage(img, 0, 0);
context.restore();
};

img.src = "http://placekitten.com/160/600";

canvas.addEventListener('mouseenter', function(evt) {
var mousePos = getMousePos(canvas, evt);
var message = mousePos.y + ', ' + mousePos.x;
mY = mousePos.y;
mX = mousePos.x;
drawLine();
}, false);

function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}

function drawLine() {

if(mX > 80) {
context.restore();
context.fillStyle = "rgb(000,000,000)";
context.beginPath();
context.moveTo(160, mY);
context.lineTo(0,mY+setCutAngle());
context.lineTo(0,600);
context.lineTo(160,600);
context.fill();
context.closePath();
} else {

}
context.stroke();
}

function setCutAngle() {
return Math.floor(Math.random() * 45) + 10;
}

最佳答案

这是您要找的吗? JSFIDDLE已更新,以便图像在开始时加载。我相信你的主要问题是由于没有清除 Canvas 引起的。因此您的剪辑不会显示

更新了 JSFIDDLE 以匹配您的代码。从加载事件中删除该逻辑。它应该只发生在您的绘图事件上。您也没有在绘制事件中清除或剪切图像。

    var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var img = document.createElement('IMG');
var mY;
var mX;

img.onload = function () {
context.drawImage(img, 0, 0);
};

img.src = "http://placekitten.com/160/600";

canvas.addEventListener('mouseenter', function(evt) {
var mousePos = getMousePos(canvas, evt);
var message = mousePos.y + ', ' + mousePos.x;
mY = mousePos.y;
mX = mousePos.x;
drawLine();
}, false);

function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}

function drawLine() {
context.save();
context.clearRect(0, 0, canvas.width, canvas.height);
if(mX > 80) {
context.restore();
context.fillStyle = "rgb(000,000,000)";
context.beginPath();
context.moveTo(160, mY);
context.lineTo(0,mY+setCutAngle());
context.lineTo(0,600);
context.lineTo(160,600);
context.clip();
context.drawImage(img, 0, 0);
context.closePath();
} else {

}
context.stroke()
}

function setCutAngle() {
return Math.floor(Math.random() * 45) + 10;
}

关于javascript - html Canvas 中的蒙版图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327988/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com