在画布绘画应用程序中,我想添加功能以在整个画布上创建覆盖,然后当我在画布上制作特定矩形时,覆盖应该从该区域移除,就像https://onpaste.com/上的一样(选择对焦工具)。我的想法是,如果在画布上制作了一个矩形,那么我可以裁剪当前图像,然后将图像再次粘贴到画布上所选位置的覆盖层上。我不确定,如何在将图像粘贴到画布上之前对其进行裁剪,我尝试使用 Kinetic.Image 对象的 setFillPaternImage 方法,但在这里我想提供 Kinetic.Image 对象而不是 javascript 图像对象,因为在 Kinetic.Image 对象上我可以使用 setAttrs 方法。请告诉我如何裁剪和添加图像,或者是否有更好的方法来实现相同的效果。链接到小提琴 - > http://jsfiddle.net/hearsid/9a2Hn/
<html>
<head>
<style>
</style>
</head>
<body>
<div id="container"></div>
<button id="button">this</button>
<script src="js/jquery.js"></script>
<script src="js/kinetic.js"></script>
<script>
var stage = new Kinetic.Stage({
container:'container',
width:500,
height:300
});
var layer=new Kinetic.Layer();
var img = new Image();
img.onload = function() {
imgObj = new Kinetic.Image({
x:0,y:0,width:400,height:300,image:img
});
layer.add(imgObj);
var circle = new Kinetic.Circle({
x:30,y:30,radius:30,fill:'red'
});
layer.add(circle);
var rect = new Kinetic.Rect({
x:0,y:0,width:300,height:500,fill:'gray',opacity:0.5
});
layer.add(rect);
stage.add(layer);
}
img.src="some.jpg";
$("#button").click(function() {
rect2 = new Kinetic.Rect({
x:200,y:30,width:100,height:100
});
/*
Careful with the commented area , here I wanted to crop the image before using FillPaternImage
var img2 = new Image();
img2.onload = function() {
imgObj2 = new Kinetic.Image({
image: img2 ,
x:300
});
imgObj2 = imgObj.clone();
imgObj2.setAttrs({image :img2 ,x:100 , y:0 });
*/
img2 = img ;
rect2.setFillPatternImage(img2);
layer.add(rect2);
layer.draw();
});
</script>
</body>
</html>