canvas(11/30)--------事件处理(局部图片放大)
2017-11-30 21:46
267 查看
example2.js
<html>
<head>
<title>Rubber handas with layered elements</title>
<style>
body {
background: rgba(100,145,250,0.3);
}
#canvas {
margin-left: 20px;
margin-right: 0;
margin-bottom: 20px;
border: thin solid #aaaaaa;
cursor: crosshair;
padding: 0;
}
#controls {
margin: 20px 0px 20px 20px;
}
#rubberbandDiv {
position: absolute;
border: 3px solid b
4000
lue;
cursor: crosshair;
display: none;
}
</style>
</head>
<body>
<div id="controls">
<input type="button" id="resetButton" value="Reset"/>
</div>
<div id="rubberbandDiv"></div>
<canvas id="canvas" width="800" height="520">canvas not supported</canvas>
<script src='example2.js'></script>
</body>
</html>
var canvas = document.getElementById('canvas'); context = canvas.getContext('2d'); rubberbandDiv = document.getElementById('rubberbandDiv'); resetButton = document.getElementById('resetButton'); image = new Image(); mousedown = {}; rubberbandRectangle = {}; dragging = false; //将div元素的左上角移动到鼠标按下的选点,并使div元素可见。 function rubberbandStart(x,y){ mousedown.x = x; mousedown.y = y; rubberbandRectangle.left = mousedown.x; rubberbandRectangle.top = mousedown.y; moveRubberbandDiv(); showRubberbandDiv(); dragging = true; } //对代表橡皮筋式选矿的这个div元素进行移动与缩放操作 function rubberbandStretch(x,y) { rubberbandRectangle.left = x < mousedown.x ? x : mousedown.x; rubberbandRectangle.top = y < mousedown.y ? y : mousedown.y; rubberbandRectangle.width = Math.abs(x - mousedown.x); rubberbandRectangle.height = Math.abs(y - mousedown.y); moveRubberbandDiv(); resizeRubberbandDiv(); } //把选中的那部分图像方法,并绘制出来,同时将表示橡皮筋式选取框的那个div隐藏起来 function rubberbandEnd() { var bbox = canvas.getBoundingClientRect(); try{ context.drawImage(canvas, rubberbandRectangle.left - bbox.left, rubberbandRectangle.top = bbox.top, rubberbandRectangle.width, rubberbandRectangle.height, 0,0,canvas.width,canvas.height); } catch(e){ } resetBubberbandRectangle(); rubberbandDiv.style.width = 0; rubberbandDiv.style.height = 0; hideRubberbandDiv(); dragging = false; } function moveRubberbandDiv() { rubberbandDiv.style.top = rubberbandRectangle.top + 'px'; rubberbandDiv.style.left = rubberbandRectangle.left + 'px'; } function resizeRubberbandDiv() { rubberbandDiv.style.width = rubberbandRectangle.width + 'px'; rubberbandDiv.style.height = rubberbandRectangle.height + 'px'; } function showRubberbandDiv() { rubberbandDiv.style.display = 'inline'; } function hideRubberbandDiv() { rubberbandDiv.style.display = 'none'; } function resetBubberbandRectangle() { rubberbandRectangle = {top:0,left:0,width:0,height:0}; } canvas.onmousedown = function(e) { var x = e.clientX; y = e.clientY; e.preventDefault(); rubberbandStart(x,y); }; window.onmousemove = function(e){ var x = e.clientX; y = e.clientY; e.preventDefault(); if (dragging) { rubberbandStretch(x,y); } }; window.onmouseup = function(e){ e.preventDefault(); rubberbandEnd(); }; image.onload = function(){ context.drawImage(image,0,0,canvas.width,canvas.height); }; resetButton.onclick = function(e){ context.clearRect(0,0,context.canvas.width,context.canvas.height); context,drawImage(image,0,0,canvas.width,canvas.height); }; image.src = 'a.png'html:
<html>
<head>
<title>Rubber handas with layered elements</title>
<style>
body {
background: rgba(100,145,250,0.3);
}
#canvas {
margin-left: 20px;
margin-right: 0;
margin-bottom: 20px;
border: thin solid #aaaaaa;
cursor: crosshair;
padding: 0;
}
#controls {
margin: 20px 0px 20px 20px;
}
#rubberbandDiv {
position: absolute;
border: 3px solid b
4000
lue;
cursor: crosshair;
display: none;
}
</style>
</head>
<body>
<div id="controls">
<input type="button" id="resetButton" value="Reset"/>
</div>
<div id="rubberbandDiv"></div>
<canvas id="canvas" width="800" height="520">canvas not supported</canvas>
<script src='example2.js'></script>
</body>
</html>
相关文章推荐
- canvas(11/30)--------事件处理(鼠标处理)精灵表坐标查看器
- 3D相册图片滑动+倾斜+放大+倒影处理
- 29_图片的放大和缩小,30_图形的旋转和特殊效果
- Android学习11--事件处理
- 用javascript放大图片局部
- 【HTML5】Canvas 内部元素添加事件处理
- 用javascript放大图片局部
- 使用HTML5 canvas做地图(3)图片加载平移放大缩小
- 图片处理(旋转,平移,缩放)View---Canvas;Paint;Bitmap
- 用js实现对图片的局部放大
- canvas处理图片为圆形或圆角矩形
- 图片局部放大效果实现
- 基于canvas图像处理的图片展示demo
- 图片的局部放大的效果实现
- 基于canvas的图片反色处理
- 图片局部放大原生js,html代码
- 3D相册图片滑动+倾斜+放大+倒影处理
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)函数
- 关于全局和局部的输入事件处理的一些零碎教训
- Android: 利用Bimap,canvas处理图片(画直线)