当前位置: 首页 > news >正文

前端canvas绘图,利用canvas在图片上面绘制标记以及给canvas添加点击事件。

前端canvas绘图,利用canvas在图片上面绘制标记以及给canvas添加点击事件。
需要实现的效果如下图:
在这里插入图片描述
首先需要一个承载的核心画布

<canvas id="canvas" width="800" height="600"></canvas>

全部代码:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>canvas</title></head><body><canvas id="canvas" width="800" height="600"></canvas></body>
</html>
<script type="text/javascript">const canvas = document.getElementById('canvas');const ctx = canvas.getContext('2d');//绘制背景图var backgroundImg = new Image();backgroundImg.src = "ditu.png"; //可以是本地图片地址backgroundImg.onload = function() {//这里要注意,canvas.width,canvas.height要等于这个就是你的Canvas width heightctx.drawImage(this, 0, 0, canvas.width, canvas.height); // 绘制底图var topImg = new Image();//topImg.src = 'https://www.baidu.com/static/imgs/cw.jpg'; 此处可以网络地址topImg.src = "jizhong_n.png";topImg.onload = function() {var x = 680; // 假设你想在底图上的(680, 150)位置绘制上图var y = 150;ctx.drawImage(topImg, x, y); // 绘制上图}var topImg = new Image();topImg.src = "jizhong_n.png";topImg.onload = function() {var x = 580;var y = 250;ctx.drawImage(topImg, x, y); // 绘制上图}var topImg = new Image();topImg.src = "jizhong_n.png";topImg.onload = function() {var x = 130;var y = 350;ctx.drawImage(topImg, x, y); // 绘制上图}}//点击事件canvas.addEventListener('mousedown', function(e) {var x = e.offsetX,y = e.offsetY;// 检查点击的位置是否在蓝色矩形内if (x >= 684 && x <= 722 && y >= 152 && y <= 207) {alert('您点击了第1个蓝色区域!');}if (x >= 585 && x <= 621 && y >= 251 && y <= 310) {alert('您点击了第2个蓝色区域!');}console.log(x + "---" + y);});
</script>
http://www.lryc.cn/news/364720.html

相关文章:

  • 38、Flink 的 WindowAssigner 之 GlobalWindows 示例
  • 同事仅靠着自己写的npm包跳槽去了大厂,羡慕了一整天
  • Yocto - bitbake任务中clean和cleanall的区别
  • Spring 中如何控制 Bean 的加载顺序?
  • 【学习笔记】Windows GDI绘图(十)Graphics详解(中)
  • web学习笔记(六十二)
  • 每天CTF小练一点--ctfshow年CTF
  • Java Set接口 - TreeSet类
  • css 理解了原理,绘制三角形就简单了
  • 【JavaEE进阶】——MyBatis操作数据库 (#{}与${} 以及 动态SQL)
  • 电阻应变片的结构
  • 云原生时代:从 Jenkins 到 Argo Workflows,构建高效 CI Pipeline
  • 【数据库系统概论】事务
  • C++-排序算法详解
  • Kotlin 引用(双冒号::)
  • C++ day3练习
  • 命令模式(行为型)
  • 韩雪医生针药结合效果好 患者赠送锦旗表感谢
  • 【队列、堆、栈 解释与区分】
  • NTP网络时间服务器_安徽京准电钟
  • Java:爬虫框架
  • ChatGPT基本原理详细解说
  • Java日期时间处理深度解析:从Date、Calendar到SimpleDateFormat
  • Flutter 中的 CupertinoUserInterfaceLevel 小部件:全面指南
  • 区块链学习记录01
  • python--装饰器
  • Docker:定义未来的软件部署
  • ros常用环境变量
  • python学习 - 爬虫案例 - 爬取链接房产信息入数据库代码实例
  • Git 完整操作之记录