Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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_Jquery_Html_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 如何从画布中删除图像(元素)

Javascript 如何从画布中删除图像(元素),javascript,jquery,html,canvas,html5-canvas,Javascript,Jquery,Html,Canvas,Html5 Canvas,我在Dynamic js的帮助下使用画布开发酒店楼层视图。我想提供一个选项来删除画布上当前拖放的图像 这是我的代码,仅用于拖放图像,不带删除选项: // get a reference to the house icon in the toolbar // hide the icon until its image has loaded var $house=$("#house"); $house.hide(); // get the offset position of the kineti

我在Dynamic js的帮助下使用画布开发酒店楼层视图。我想提供一个选项来删除画布上当前拖放的图像

这是我的代码,仅用于拖放图像,不带删除选项:

// get a reference to the house icon in the toolbar
// hide the icon until its image has loaded
var $house=$("#house");
$house.hide();

// get the offset position of the kinetic container
var $stageContainer=$("#container");
var stageOffset=$stageContainer.offset();
var offsetX=stageOffset.left;
var offsetY=stageOffset.top;

// create the Kinetic.Stage and layer
var stage = new Kinetic.Stage({
  container: 'container',
  width: 350,
  height: 350
});
var layer = new Kinetic.Layer();
stage.add(layer);

// start loading the image used in the draggable toolbar element
// this image will be used in a new Kinetic.Image
var image1=new Image();
image1.onload=function(){
  $house.show();
}
image1.src="https://dl.dropboxusercontent.com/u/139992952/multple/4top.png";

// make the toolbar image draggable
$house.draggable({
  helper:'clone',
});

// set the data payload
$house.data("url","house.png"); // key-value pair
$house.data("width","32"); // key-value pair
$house.data("height","33"); // key-value pair
$house.data("image",image1); // key-value pair

// make the Kinetic Container a dropzone
$stageContainer.droppable({
  drop:dragDrop,
});

// handle a drop into the Kinetic container
function dragDrop(e,ui){

  // get the drop point
  var x=parseInt(ui.offset.left-offsetX);
  var y=parseInt(ui.offset.top-offsetY);

  // get the drop payload (here the payload is the image)
  var element=ui.draggable;
  var data=element.data("url");
  var theImage=element.data("image");

  // create a new Kinetic.Image at the drop point
  // be sure to adjust for any border width (here border==1)
  var image = new Kinetic.Image({
    name:data,
    x:x,
    y:y,
    image:theImage,
    draggable: true
  });
  layer.add(image);
  layer.draw();
}
body{padding:20px;}
#container{
  border:solid 1px #ccc;
  margin-top: 10px;
  width:350px;
  height:350px;
}
#toolbar{
  width:350px;
  height:35px;
  border:solid 1px blue;
}
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.2.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>

<h4>Drag from toolbar onto canvas. Then drag around canvas.</h4>
<div id="toolbar">
  <img id="house" width=32 height=32 src="https://dl.dropboxusercontent.com/u/139992952/multple/4top.png"><br>
</div>
<div id="container"></div>

您可以使用Kinetic to image.remove,然后使用layer.draw刷新画布,方式与类似。

如果要临时删除图像并稍后重新添加,请使用:

// temporarily remove the image from the layer
yourImage.remove();
yourLayer.draw();

// and later re-add it
yourLayer.add(yourImage);
yourLayer.draw();
但是,如果要永久删除映像并恢复其使用的所有资源,请执行以下操作:

// permanently delete the image and reclaim all the resources it used
yourImage.destroy();
yourLayer.draw();