本文实例为大家分享了canvas实现放大镜查看图片功能的具体代码,供大家参考,具体内容如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="background: black;">
<canvas id="myCanvas" style="display: block;margin: 0px auto;border: 10px solid #aaa ">
你的浏览器不支持canvas
</canvas>
<canvas id="offCanvas" style="display: none"></canvas>
<script>
var myCanvas = document.getElementById("myCanvas");
var context = myCanvas.getContext("2d");
var offCanvas = document.getElementById("offCanvas");
var offContext = offCanvas.getContext("2d");
var isMouseDown = false;
var scale;
var image = new Image();
window.onload = function () {
myCanvas.width = 300;
myCanvas.height = 200;
image.src = "1.jpg";
image.onload = function () {
offCanvas.width = image.width;
offCanvas.height = image.height;
scale = offCanvas.width / myCanvas.width ;
context.drawImage(image,0,0,myCanvas.width,myCanvas.height);
offContext.drawImage(image,0,0);
}
};
function windowToCanvas(x,y) {
var bbox = myCanvas.getBoundingClientRect();
return { x : x - bbox.left , y : y - bbox.top};
}
myCanvas.onmousedown = function (e) {
e.preventDefault();
var point = windowToCanvas(e.clientX , e.clientY);
console.log(point);
isMouseDown = true;
drawCanvasWithMagnifier( true , point );
};
myCanvas.onmousemove = function (e) {
e.preventDefault();
if (isMouseDown ){
var point = windowToCanvas(e.clientX , e.clientY);
drawCanvasWithMagnifier( true , point );
}
};
myCanvas.onmouseup = function (e) {
e.preventDefault();
isMouseDown = false;
drawCanvasWithMagnifier( false );
};
myCanvas.onmouseout = function (e) {
e.preventDefault();
isMouseDown = false;
drawCanvasWithMagnifier( false );
};
function drawCanvasWithMagnifier( isShowMagnifier , point) {
context.clearRect(0,0,myCanvas.width,myCanvas.height);
context.drawImage(image,0,0,myCanvas.width,myCanvas.height);
if(isShowMagnifier == true ){
drawMagnifier( point );
}
}
function drawMagnifier( point ) {
var imageLG_cx = point.x * scale ;
var imageLG_cy = point.y * scale ;
var mr = 20 ;
var sx = imageLG_cx - mr ;
var sy = imageLG_cy - mr ;
var dx = point.x - mr ;
var dy = point.y - mr ;
context.save();
context.lineWidth = 5.0;
context.strokeStyle = "#069";
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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# canvas
# 放大镜
# viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
# JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
# JavaScript编写点击查看大图的页面半透明遮罩层效果实例
# 基于JavaScript实现移动端点击图片查看大图点击大图隐藏
# js写的方法实现上传图片之后查看大图
# javascript基础知识大全 便于大家学习
# 也便于我自己查看
# JS网页图片查看器(兼容IE、FF)可控制图片放大缩小移动
# Javascript查看大图功能代码实现
# 不支持
# 大家分享
# 具体内容
# 大家多多
# solid
# aaa
# offCanvas
# script
# margin
# block
# display
# border
# auto
# px
# scale
# false
# isMouseDown
# window
# Image
相关文章:
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
北京制作网站的公司,北京铁路集团官方网站?
制作网页的网站有哪些,电脑上怎么做网页?
Python如何创建带属性的XML节点
nginx修改上传文件大小限制的方法
大同网页,大同瑞慈医院官网?
建站主机选购指南:核心配置与性价比推荐解析
高性能网站服务器配置指南:安全稳定与高效建站核心方案
青岛网站建设如何选择本地服务器?
如何彻底删除建站之星生成的Banner?
php json中文编码为null的解决办法
定制建站策划方案_专业建站与网站建设方案一站式指南
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站之星如何修改网站生成路径?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
制作企业网站建设方案,怎样建设一个公司网站?
如何通过VPS搭建网站快速盈利?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
网站企业制作流程,用什么语言做企业网站比较好?
如何通过主机屋免费建站教程十分钟搭建网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
如何通过商城自助建站源码实现零基础高效建站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站之星下载版如何获取与安装?
ui设计制作网站有哪些,手机UI设计网址吗?
如何零成本快速生成个人自助网站?
建站之星导航菜单设置与功能模块配置全攻略
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
高防服务器如何保障网站安全无虞?
建站之星后台密码遗忘如何找回?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
怀化网站制作公司,怀化新生儿上户网上办理流程?
微信小程序 input输入框控件详解及实例(多种示例)
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
如何基于PHP生成高效IDC网络公司建站源码?
如何配置FTP站点权限与安全设置?
广州营销型建站服务商推荐:技术优势与SEO优化解析
网站制作知乎推荐,想做自己的网站用什么工具比较好?
香港服务器部署网站为何提示未备案?
定制建站流程解析:需求评估与SEO优化功能开发指南
如何选择高效稳定的ISP建站解决方案?
如何零基础在云服务器搭建WordPress站点?
宝塔Windows建站如何避免显示默认IIS页面?
小型网站建站如何选择虚拟主机?
宝塔建站助手安装配置与建站模板使用全流程解析
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何在IIS中配置站点IP、端口及主机头?
高端云建站费用究竟需要多少预算?
*请认真填写需求信息,我们会在24小时内与您取得联系。