使用浮动div元素来实现橡皮筋式截取选取框(鼠标监听事件)
来源:互联网 发布:知彼而知己 打不开 编辑:程序博客网 时间:2024/05/01 13:55
一 说明:橡皮筋式选取框是让用户在canvas之中选取某个区域,将该区域 放大。起初该canvas会显示一幅图像,,当你选取某个区域,应用程序就会放大该区域。。
二总体思路:加载图像
onmousedown,获取用户开始选取的点(x,y),
onmousemove获取用户鼠标拉动的点(x,y)并开始绘制选取的框
onmouseup 当用户鼠标不再是点击着的状态时结束选取
三:代码如下:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> #canvas{ border: 3px solid hotpink; } #rubberbandiv{ position: absolute; border: 3px solid black; cursor: crosshair; display: none; } </style></head><body> <div id="rubberbandiv"></div> <canvas id="canvasx" width="700" height="600"> canvas is not support! </canvas> <script src="选取框.js"></script></body></html>
js代码如下:
/** * Created by Administrator on 2015/5/1. */canvas = document.getElementById('canvasx');context = canvas.getContext('2d');rubberbandiv = document.getElementById('rubberbandiv');rectangle = {};image = new Image();image.src='1.png';var dragging = false;image.onload = function(e){ context.drawImage(image,0,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(); rubberbandstrech(x,y);//鼠标移动的距离};window.onmouseup = function(e){ rubberbandend();//截图结束};function rubberbandstart(x,y){ mounsedownx =x; mounsedowny = y;//get indexod x,y rectangle.left = mounsedownx; rectangle.top =mounsedowny; moveRubberbanddiv();//定义选取框的起点 showRubberbanddiv(); dragging = true;}function moveRubberbanddiv(){ rubberbandiv.style.top = rectangle.top + 'px'; rubberbandiv.style.left = rectangle.left + 'px';}function showRubberbanddiv(){ rubberbandiv.style.display = 'inline'}function rubberbandstrech(x,y){ rectangle.left = x<mounsedownx?x:mounsedownx; rectangle.top = y<mounsedowny?y:mounsedowny; rectangle.width = Math.abs(x-mounsedownx) ; rectangle.height = Math.abs(y-mounsedowny); moveRubberbanddiv();//当移动的点在mounsedown的左边时,要从新定义left,top(选取框的起点) resizeRubberbanddiv();//}function resizeRubberbanddiv(){ rubberbandiv.style.width = rectangle.width +'px'; rubberbandiv.style.height = rectangle.height +'px';}function rubberbandend(){ var bbox = canvas.getBoundingClientRect(); try{ context.drawImage(canvas,rectangle.left-bbox.left,rectangle.top-bbox.top,rectangle.width,rectangle .height,0,0,canvas.width,canvas.height); } catch (e){ } resetRubberbandRectangle(); rubberbandiv.style.width = 0; rubberbandiv.style.height = 0; hideRubberbanddiv(); dragging =false;}function resetRubberbandRectangle(){ rectangle = {top:0,left:0,width:0,height:0};}function hideRubberbanddiv(){ rubberbandiv.style.display = 'none';}
结果如下:
选取前:
选取框后
0 0
- 使用浮动div元素来实现橡皮筋式截取选取框(鼠标监听事件)
- Canvas 入门4 鼠标事件综合应用 橡皮筋选取框
- 4.5.1_利用getImageData()与putImageData()方法来实现橡皮筋式选取框
- DIV 清除浮动--CSS 伪元素-- 阴影---鼠标事件
- 4.5.1_利用getImageData()与putImageData()方法来实现橡皮筋式选取框_改良版
- 鼠标滑到某元素标签弹出div浮动框及其关闭
- 使用PreTranslateMessage函数实现类似全局钩子监听鼠标事件
- IMessageFilter实现鼠标键盘事件监听
- 鼠标事件的监听和使用
- 筛选class来选取元素的一种实现
- 伪元素,使用伪元素来清除浮动
- 4.5.2_带有透明度特效的橡皮筋式选取框
- React+AntD+AntV 前端实例 鼠标移动事件 触发显示 浮动DIV图层(展现一个趋势图)
- (11)HTML5-鼠标单击事件监听
- Java监听鼠标事件
- 鼠标监听事件无效
- 鼠标监听事件
- 监听鼠标滚轮事件
- Linux帮助命令
- c++_sqrt实现判断素数函数
- svn客户端--TortoiseSVN的安装
- 软考复习专题十---算法设计
- Android L Phone 启动流程
- 使用浮动div元素来实现橡皮筋式截取选取框(鼠标监听事件)
- 【C语言总结】宏定义,预处理
- android 持久化保存cookie
- 方向导数和梯度
- String与InputStream相互转换
- Android ListView 一
- hznu 1464: ST Task(算角度,注意精度)
- Unique Paths
- Java的内存机制