canvas實現的圖片放大鏡效果
分享一段程式碼例項,它利用canvas實現了放大鏡效果。
當滑鼠在圖片上按住左鍵以後,就可以展現放大效果,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #canvas { display:block; margin:0 auto; border:1px solid #aaa; } </style> </head> <body> <canvas id="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 down = false var image = new Image() var scale window.onload = function() { canvas.width = 383; canvas.height = 239; image.src = "demo/js/img/pretty.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 weizhi(x, y) { var bbox = canvas.getBoundingClientRect() return { x: x - bbox.left, y: y - bbox.top }; } canvas.onmousedown = function(e) { e.preventDefault(); var point = weizhi(e.clientX, e.clientY); down = true; drawcanvasfaj(true, point); } canvas.onmousemove = function(e) { e.preventDefault(); if (down) { var point = weizhi(e.clientX, e.clientY) drawcanvasfaj(true, point); } } canvas.onmouseup = function(e) { e.preventDefault(); down = false; drawcanvasfaj(false); } canvas.onmouseout = function(e) { e.preventDefault(); down = false; drawcanvasfaj(false); } function drawcanvasfaj(boolean, point) { context.clearRect(0, 0, canvas.width, canvas.height); context.drawImage(image, 0, 0, canvas.width, canvas.height); if (boolean == true) { drawfaj(point) } } function drawfaj(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.save(); context.lineWidth = 2; context.strokeStyle = "#FFCCCC" context.beginPath(); context.arc(point.x, point.y, mr, 0, Math.PI * 2) context.stroke(); context.clip(); context.drawImage(offCanvas, sx, sy, 2 * mr, 2 * mr, dx, dy, 2 * mr, 2 * mr) context.restore(); } </script> </body> </html>
相關文章
- JavaScript 圖片放大鏡效果JavaScript
- 圖片放大鏡效果實現過程詳解
- 視覺化學習:實現Canvas圖片區域性放大鏡視覺化Canvas
- 直播app開發搭建,純javascript實現圖片放大鏡效果APPJavaScript
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- 離屏Canvas——製作放大鏡效果Canvas
- 利用 OmniGraffle 實現放大鏡標註效果
- Magnifier.js - 支援滑鼠滾輪縮放的圖片放大鏡效果NifiJS
- 淘寶放大鏡實現
- 一個基於vue的圖片放大鏡Vue
- Canvas——滑桿操控圖片放大縮小Canvas
- CSS3圖片拉近放大效果CSSS3
- jQuery圖片放大和旋轉效果jQuery
- jQuery 放大鏡效果詳解jQuery
- Flutter 圖片加濾鏡效果Flutter
- canvas實現圖片馬賽克Canvas
- JS實現動態瀑布流及放大切換圖片效果(js案例)JS
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- iOS實現點選圖片放大&長按儲存圖片iOS
- canvas實現的旋轉太極圖效果Canvas
- 利用 canvas 實現圖片壓縮Canvas
- Canvas + JavaScript 製作圖片粒子效果CanvasJavaScript
- 圖片模糊效果實現(RenderScript)
- 使用AS3.0程式碼實現給圖片新增濾鏡的模糊與斜角效果S3
- C語言實現BMP圖片的放大縮小C語言
- JS 文字輸入框放大鏡效果JS
- 通過JavaScript如何做一個仿京東的跟隨圖片放大鏡效果?(附加註釋)簡單實用。JavaScript
- 實現背景圖片的全屏拉伸效果
- javascript實現的放大效果程式碼JavaScript
- android實現多圖片放大縮小的切換Android
- canvas實現波浪效果Canvas
- JS實現馬賽克圖片效果JS
- PHP實現水印效果(文字、圖片)PHP
- 滑鼠放在圖片實現高亮效果
- Canvas系列之一——濾鏡效果Canvas
- 用JavaScript中jQuery編寫放大鏡效果JavaScriptjQuery
- canvas實現 漂亮的下雨效果Canvas
- 實現圖片染色效果的三種方式