gpt4 book ai didi

javascript - 如何通过在 Fabricjs 中单击图像来删除图像?

转载 作者:行者123 更新时间:2023-11-30 20:33:05 25 4
gpt4 key购买 nike

我想要两个事件处理程序。一个是当我基于 mouseX 和 mouseY 在 Canvas 上单击时,图像出现在特定位置(对齐网格)。

第二个是当我点击出现的同一张图片时,我希望删除该图片。

第一个事件处理程序已实现并且运行良好,第二个事件处理程序无法正常工作我该如何实现?

我还猜想,当我想删除我的图像时,第一个事件处理程序会触发并添加新图像,这是一个恶性循环。

这是我的 addImage() 函数:

function addImage(spaceX, spaceY, mouseX, mouseY, sizeX, sizeY, url) {
//spaceX/Y is the size of my grid
//mouseX/Y are the coordinates of my mouse
//sizeX/Y is the size of my canvas
//url is the url of my image.
fabric.Image.fromURL(url, function(oImg) {
var divX = sizeX / spaceX;
var resX = mouseX / sizeX * divX;
var indW = Math.trunc(resX); //X index in the grid
var divY = sizeY / spaceY;
var resY = mouseY / sizeY * divY;
var indH = Math.trunc(resY); //Y index in the grid
oImg.top = indH * spaceY;
oImg.left = indW * spaceX;
oImg.scaleToWidth(spaceX);
oImg.scaleToHeight(spaceY);
oImg.selectable = false;
//this is my non-working function to remove my image.
oImg.on('click', function() {
canvas.getActiveObject().remove();
})
canvas.add(oImg);
});
}

最佳答案

oImg.on('mousedown', function (){
canvas.remove(this);
})

为对象使用 mousedown 事件。

演示

var canvas = new fabric.Canvas('canvas');
fabric.Image.fromURL('http://fabricjs.com/assets/pug.jpg', function(oImg) {
oImg.on('mousedown', function (){
canvas.remove(this);
})
canvas.add(oImg);
});
canvas{
border:2px solid #000;
}
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas id='canvas' width=500 height=400>

关于javascript - 如何通过在 Fabricjs 中单击图像来删除图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130848/

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