canvas 图片鼠标区域放大细节
2016-04-22 18:53
253 查看
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>图片鼠标区域放大细节</title>
</head>
<style>
body{background: #666;margin: 0;padding: 0; }
input{
display: block;
margin: 20px auto;
}
</style>
<body>
<canvas id="kycanvas" style="display: block;margin:0 auto; border: 1px solid darksalmon;margin-top: 100px;">
当前浏览器不支持canvas,请更换浏览器后再试!
</canvas>
<canvas id="offCanvas" style="display: none;"></canvas>
</body>
<script>
var canvas = document.getElementById("kycanvas");//选取画布
var context = canvas.getContext("2d");//创建context对象
var offCanvas = document.getElementById("offCanvas");//选取画布
var offContext = offCanvas.getContext("2d");//创建context对象
var scale;
var image = new Image();
var isMouseDown = false;
window.onload = function (){
canvas.width = 400;//画布宽
canvas.height = 400; //画布高
image.src = "images/im1.jpg";//图片地址
image.onload = function(){ //图片加载完毕
offCanvas.width = image.width;
offCanvas.height = image.height;
scale = offCanvas.width / canvas.width;
context.drawImage(image,0,0,canvas.width,canvas.height);
offContext.drawImage(image,0,0);
};
};
function windowToC
4000
anvas(x,y){//获取画布上坐标点
var bbox = canvas.getBoundingClientRect();
return { x : x - bbox.left , y : y - bbox.top };
};
canvas.onmousedown = function (e){
e.preventDefault(); //去默认事件
var point = windowToCanvas(e.clientX , e.clientY);
console.log(point.x , point.y);
isMouseDown = true;
drawCanvasWithMagnifier(true , point)
};
canvas.onmousemove = function (e){
e.preventDefault(); //去默认事件
if(isMouseDown == true){
var point = windowToCanvas(e.clientX , e.clientY);
console.log(point.x , point.y);
drawCanvasWithMagnifier(true , point)
}
};
canvas.onmouseup = function (e){
e.preventDefault(); //去默认事件
isMouseDown = false;
drawCanvasWithMagnifier(false);
};
canvas.onmouseout = function (e){
e.preventDefault(); //去默认事件
isMouseDown = false;
drawCanvasWithMagnifier(false);
};
function drawCanvasWithMagnifier(isShowMagnifier , point){
context.clearRect(0,0,canvas.width,canvas.height);
context.drawImage(image,0,0,canvas.width,canvas.height);
if(isShowMagnifier == true){
drawMagnifier(point);
}
}
function drawMagnifier(point){
var imageLG_cx = point.x * scale;
var imageLG_cy = point.y * scale;
var mr = 100;
var sx = imageLG_cx - mr;
var sy = imageLG_cy - mr;
var dx = point.x - mr;
var dy = point.y - mr;
context.drawImage(offCanvas, sx , sy , 2*mr , 2*mr , dx , dy , 2*mr , 2*mr);
}
</script>
</html>
<html>
<head>
<meta charset="utf-8" />
<title>图片鼠标区域放大细节</title>
</head>
<style>
body{background: #666;margin: 0;padding: 0; }
input{
display: block;
margin: 20px auto;
}
</style>
<body>
<canvas id="kycanvas" style="display: block;margin:0 auto; border: 1px solid darksalmon;margin-top: 100px;">
当前浏览器不支持canvas,请更换浏览器后再试!
</canvas>
<canvas id="offCanvas" style="display: none;"></canvas>
</body>
<script>
var canvas = document.getElementById("kycanvas");//选取画布
var context = canvas.getContext("2d");//创建context对象
var offCanvas = document.getElementById("offCanvas");//选取画布
var offContext = offCanvas.getContext("2d");//创建context对象
var scale;
var image = new Image();
var isMouseDown = false;
window.onload = function (){
canvas.width = 400;//画布宽
canvas.height = 400; //画布高
image.src = "images/im1.jpg";//图片地址
image.onload = function(){ //图片加载完毕
offCanvas.width = image.width;
offCanvas.height = image.height;
scale = offCanvas.width / canvas.width;
context.drawImage(image,0,0,canvas.width,canvas.height);
offContext.drawImage(image,0,0);
};
};
function windowToC
4000
anvas(x,y){//获取画布上坐标点
var bbox = canvas.getBoundingClientRect();
return { x : x - bbox.left , y : y - bbox.top };
};
canvas.onmousedown = function (e){
e.preventDefault(); //去默认事件
var point = windowToCanvas(e.clientX , e.clientY);
console.log(point.x , point.y);
isMouseDown = true;
drawCanvasWithMagnifier(true , point)
};
canvas.onmousemove = function (e){
e.preventDefault(); //去默认事件
if(isMouseDown == true){
var point = windowToCanvas(e.clientX , e.clientY);
console.log(point.x , point.y);
drawCanvasWithMagnifier(true , point)
}
};
canvas.onmouseup = function (e){
e.preventDefault(); //去默认事件
isMouseDown = false;
drawCanvasWithMagnifier(false);
};
canvas.onmouseout = function (e){
e.preventDefault(); //去默认事件
isMouseDown = false;
drawCanvasWithMagnifier(false);
};
function drawCanvasWithMagnifier(isShowMagnifier , point){
context.clearRect(0,0,canvas.width,canvas.height);
context.drawImage(image,0,0,canvas.width,canvas.height);
if(isShowMagnifier == true){
drawMagnifier(point);
}
}
function drawMagnifier(point){
var imageLG_cx = point.x * scale;
var imageLG_cy = point.y * scale;
var mr = 100;
var sx = imageLG_cx - mr;
var sy = imageLG_cy - mr;
var dx = point.x - mr;
var dy = point.y - mr;
context.drawImage(offCanvas, sx , sy , 2*mr , 2*mr , dx , dy , 2*mr , 2*mr);
}
</script>
</html>
相关文章推荐
- linux上的远程桌面Xmanager3
- TimesTen 应用层数据库缓存学习:12. 管理缓存环境
- css实现等高布局 两栏自适应布局 三栏自适应布局
- 简单说-代理
- OC金额转大写
- 作业调度
- [CSS3] CSS Media Queries
- 基础知识归类
- Valgrind对于大型程序似乎作用不好
- Sqlite数据库的小结
- linux标准库的问题
- linux程序设计学习笔记(7-15)
- 我以前也是个软妹纸啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊~
- 程序猿二三事之工具使用-Eclipse调试Java常用功能介绍
- (WIP) DPDK理论学习(by quqi99)
- Java程序方法设计
- 使用sqlcipher对sqllite数据库加密,方式二(添加静态库)
- 《TCP/IP详解》学习笔记四(TCP)
- Redis配置文件详解
- POJ 3070 Fibonacci(矩阵快速幂)