参考:canvas之放大镜效果_WHTGS的博客-CSDN博客_canvas 放大镜

效果:

代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>canvas_magnifier</title><link rel="stylesheet" href="canvas_magnifier.css"></head><body><div><canvas width="3000" height="2000" id="canvas1"></canvas><canvas width="1000" height="500" id="canvas2"></canvas></div><script src="canvas_magnifier.js"></script>
</body></html>
div {position: relative;
}
div canvas {position: absolute;left: 0;top: 0;margin: 0 auto;
}
div #canvas2 {border-radius: 50%;box-shadow: 10px 10px #665858;
}
var canvas1 = document.querySelector("#canvas1");
var canvas2 = document.querySelector("#canvas2");
var div = document.querySelector("div");
var ctx1 = canvas1.getContext('2d');
var ctx2 = canvas2.getContext('2d');var img = new Image();
img.src = 'graduate2020.png';
img.addEventListener("load", loadHandler);function loadHandler(e) {div.addEventListener("mousemove", mouseHandler)// 2、3参数决定开始剪切的x坐标位置、开始剪切的y坐标位置。// 3、4参数决定被剪切图像的宽度、高度。ctx1.drawImage(img, 0, 0, 3000, 2000);
}function mouseHandler(e) {console.log(e.clientX, e.clientY);canvas2.style.left = e.clientX + 'px';canvas2.style.top = e.clientY + 'px';// 1、2参数决定要清除的矩形左上角的x坐标、y坐标。// 3、4参数决定要清除的矩形的宽度、高度,以像素计。ctx2.clearRect(0, 0, 1000, 500);// 5、6参数决定在画布上放置图像的 x、y 坐标位置。// 7、8参数决定要使用的图像的宽度、高度(伸展或缩小图像)。ctx2.drawImage(img, e.clientX * (img.width / 3000), e.clientY * (img.height / 2000), 1000, 500, 0, 0, 2000, 1000);
}

注意:

使用canvas时出现Uncaught TypeError: Cannot read property ‘getContext‘ of null 错误。

这是因为浏览器还没有加载htnml文件的时候就已经执行了文件。

练手小项目——canvas放大镜效果 放大图片相关推荐

  1. 练手小项目,爬取3DM图片

    博客原文:https://weweweha.com 1. 概述 ​ 爬取3DM指定网页的游戏壁纸,并且通过多线程来加速爬取图片的速度. 2.使用库 ​ request库用来1解析指定网页,re库用来搜 ...

  2. click 点击图片不起作用_JavaScript 练手小案例:基于SVG的图片切换效果

    最近太忙了,自动来到rjxy后,不晓得怎么回事,忙的都没时间更博了. 昨天还有个同学跟我说,你好久没更新博客了.. 甚为惭愧~~ 正好12月来了,今天开一篇. 最近上课讲到了 SVG,不晓得同学们理解 ...

  3. 台式小风扇(HTML+CSS+JS练手小项目)

    台式小风扇(HTML+CSS+JS练手小项目) 功能介绍 外观展示 HTML代码 CSS代码 JS代码 总结 功能介绍 前段时间看到这样的风扇特效,感觉还挺好玩,就自己也写一个练练手. 风扇有四个档位 ...

  4. springboot+vue练手小项目[前台搭建+后台编写](非常详细)

    [ springboot+vue练手小项目 ] 技术栈: springboot+vue3+element-plus +Mybaties-plus+hutool +mysql8 项目介绍 :最近刚学了s ...

  5. ssm练手小项目_20 个 JavaScript+Html+CSS 练手的小项目

    前言: 最近在 GitHub 上发现了一个 vanillawebprojects[1] 开源仓库,里面收集了 20 个 JavaScript+Html+CSS的练手项目,没有使用任何框架,可以让你从基 ...

  6. 爬虫练手小项目:豆瓣高分图书TOP100

    爬虫练手小项目:豆瓣高分图书TOP100 import requests import re from requests.exceptions import RequestException impo ...

  7. 数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)

    文章目录 前言 正文(无删减) 我的想法(删减修改版) 数据导入与数据存储 功能实现 数据结构 用户结构 SIM卡结构 AVL树数据结构 哈希表结构 数据表 用户表 SIM卡表 时间安排 前言 本月主 ...

  8. html+css+js之20个练手小项目(一)

    html+css+js之20个练手小项目(一)--Hangman 前言 一.HTML 二.CSS 三.JS 前言 前端新手练习,记录不迷失. 主要练习html和CSS布局以及JS. 来源github, ...

  9. c语言模拟器怎么打程序,C语言初学者练手小项目——万花模拟器

    原标题:C语言初学者练手小项目--万花模拟器 还记得小时候玩的万花尺么?好好玩,各种不同的点距能画出各种各样形状图形. C语言程序万花尺模拟 函数功能:每隔5秒随机生成万花图形 并自动保存作图参数以及 ...

最新文章

  1. android模糊查询listview数据_ListView的简单应用(一)
  2. ORM学员管理系统单表查询示例
  3. python动态心形代码-Python数学方程式画心型图案源码示例
  4. python学习手册中文版免费下载-Python学习手册
  5. Netty详解(五):Netty TCP粘包 拆包
  6. mysql集群经常无法truncate_失败的mysql cluster配置-无法顺利转换已有数据
  7. 为什么剩余数不能相加_为什么各位之和是 3 的倍数的数能被 3 整除?
  8. 如何拉取k8s镜像_K8s 从懵圈到熟练 – 镜像拉取这件小事
  9. awk是命令还是编程语言
  10. struts1.3.8与hibernate3.2.5整合所遇到的问题
  11. oracle 判断数值为小数位数为一位且为0_Python的循环、判断和各种表达式(长文系列第二篇)...
  12. java 基础数据结构源码详解及数据结构算法
  13. [BZOJ]4127: Abs
  14. OSPF与EIGRP的比较
  15. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | AVC 序列头格式解析 )
  16. 聊一聊TVS管的电路使用
  17. 数据可视化之中国足球队在国际足联及亚洲的历史排名看这儿
  18. 阳光宽频加密算法破解,找出隐藏真实地址。
  19. 《面向对象程序设计》2018年春学期寒假及博客作业总结
  20. 一朝春尽红颜老,花落人亡两不知.

热门文章

  1. web编程期中大作业
  2. IP地址的划分(A/B/C/D/E)类
  3. 智原深耕网通应用 布建完整ASIC解决方案
  4. android sqlite #039;,问题详情_百度云推送_免费专业最精准的移动推送服务平台
  5. Android 多窗口适配
  6. 一个悲观主义者的积极思考——职业篇[待续2021/06/27]
  7. 抖音直播监测——2分钟了解知音数据小程序
  8. 解决Windows10开机黑屏问题
  9. 如何使用Kumo Java Word Cloud?
  10. TI公司DSP集成开发环境(CCS)有哪几种工作模式?各自特点是什么?