离屏Canvas——制作放大镜效果
来源:互联网 发布:火花棱镜淘宝 编辑:程序博客网 时间:2024/04/30 23:11
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body style="background: black;"> <canvas id="canvas" style="display:block;margin:0 auto;border:1px solid #aaa;"> 您的浏览器尚不支持canvas </canvas> <canvas id="offCanvas" style="display: none"> </canvas> <script> var canvas = document.getElementById("canvas") var context = canvas.getContext("2d") var offCanvas = document.getElementById("offCanvas") var offContext = offCanvas.getContext("2d") var image = new Image() var isMouseDown = false var scale window.onload = function(){ canvas.width = 1152 canvas.height = 768 image.src = "img-lg.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 windowToCanvas( x , y ){ var bbox = canvas.getBoundingClientRect() return {x:x-bbox.left , y:y-bbox.top} } canvas.onmousedown = function(e){ e.preventDefault() isMouseDown = true 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 ) } canvas.onmousemove = function(e){ e.preventDefault() if( isMouseDown == true ){ point = windowToCanvas( e.clientX , e.clientY ) console.log( point.x , point.y ) drawCanvasWithMagnifier( true , point ) } } 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 mr = 200 var imageLG_cx = point.x * scale var imageLG_cy = point.y * scale var sx = imageLG_cx - mr var sy = imageLG_cy - mr var dx = point.x - mr var dy = point.y - mr context.save() context.lineWidth = 10.0 context.strokeStyle = "#069" context.beginPath() context.arc( point.x , point.y , mr , 0 , Math.PI*2 , false ) context.stroke() context.clip() context.drawImage( offCanvas , sx , sy , 2*mr , 2*mr , dx , dy , 2*mr , 2*mr ) context.restore() } </script></body></html>
context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
参数值
1 0
- 离屏Canvas——制作放大镜效果
- Canvas放大镜效果
- Canvas实现放大镜效果
- canvas实现放大镜效果
- canvas图像放大镜效果
- 放大镜效果的制作
- 【HTML5】Canvas 实现放大镜效果
- js制作淘宝放大镜效果
- 网页图片放大镜效果——jqzoom
- Android——图片放大镜效果
- canvas 制作时钟效果
- 使用jQuery制作商品放大镜效果
- canvas放大镜
- canvas 放大镜
- canvas 放大镜
- 离屏Canvas——制作水印图片
- 放大镜效果
- 放大镜效果
- C# XML与Json之间相互转换实例详解
- 励精图治---Concurrency---如何创建多线程
- CocoaPods pod install/pod update更新慢
- hdu 素数环1016
- [LeedCode OJ]#121 Best Time to Buy and Sell Stock
- 离屏Canvas——制作放大镜效果
- package 和 import 关键字
- android sdk 镜象站点
- Spring MVC之@RequestMapping 详解
- 1.实例变量可见度2.方法3.setter, getter
- android studio中图片格式的问题
- 关于C语言中二维数组的P+1与*(P+1)个人浅见
- Spring Security Remember Me Example
- 15款开源PHP类库