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

使用鼠标在Canvas上绘制矩形

前言

最近接到一个项目,要求在图像上画框 圈监测范围,发现如下方案可快速实现,特此记录。

代码如下:

<template><div><canvas id="myCanvas" ref="myCanvas" :width="canvasWidth" :height="canvasHeight" class="canvas-box" @mousedown="mousedown" @mouseup="mouseup" @mousemove="mousemove"></canvas></div>
</template><script>export default {name:"",data() {return {canvasFlag: false,canvasWidth: 491,canvasHeight: 276,startPos:[0,0],endPos:[0,0],};},methods: {mousedown(e){// console.log("鼠标落下");this.canvasFlag = true;this.startPos=[e.offsetX,e.offsetY] // 鼠标落下时的X,Y},mouseup(e){// console.log("鼠标抬起");this.canvasFlag = false;},mousemove(e){// console.log("鼠标移动");this.drawRect(e);},drawRect(e){if(this.canvasFlag){const canvas = this.$refs.myCanvas;var ctx = canvas.getContext("2d");let x = this.startPos[0];let y = this.startPos[1];this.endPos=[e.offsetX,e.offsetY]ctx.clearRect(0,0,canvas.width,canvas.height);ctx.beginPath();//设置线条颜色,必须放在绘制之前ctx.strokeStyle = '#ff0000';// 线宽设置,必须放在绘制之前ctx.lineWidth = 2;ctx.strokeRect(x,y,e.offsetX-x,e.offsetY-y);console.log("绘制图形",this.startPos,this.endPos);}}},};
</script>

效果图

在这里插入图片描述

http://www.dtcms.com/a/303894.html

相关文章:

  • 【dropdown组件填坑指南】鼠标从触发元素到下拉框中间间隙时,下拉框消失,怎么解决?
  • 前后端分离的项目,有一个计算的功能,是前端计算还是后端计算
  • C/C++离线环境安装(VSCode + MinGW)
  • leetcode热题——螺旋矩阵
  • JAVA中集合的遍历方式
  • Python OpenCV图像增强:高通滤波与浮雕特效实战指南
  • SAP-ABAP:Excel 文件内容解析到 ABAP 内表函数ALSM_EXCEL_TO_INTERNAL_TABLE运用详解
  • 记一次生产环境排查OOM问题,byte[]数组超多
  • 自动调优 vLLM 服务器参数(实战指南)
  • ArkTS懒加载LazyForEach的基本使用
  • 【Delphi】快速理解泛型(Generics)
  • 疯狂星期四文案网第23天运营日记
  • 第2章 cmd命令基础:常用基础命令(1)
  • 为什么分类任务偏爱交叉熵?MSE 为何折戟?
  • Aspose:构建高效文档处理系统的专业组件选择
  • 无人机数传链路模块技术分析
  • 31.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--收支分类
  • Oracle 和 MySQL 中的日期类型比较
  • DeepSeek MoE 技术解析:模型架构、通信优化与负载均衡
  • 四、Linux核心工具:Vim, 文件链接与SSH
  • 暑期算法训练.10
  • 如何选择AI IDE?对比Cursor分析功能差异
  • 【Zabbix】Ansible批量部署ZabbixAgent
  • 三步给小智ESP32S3智能语音硬件接入小程序打通MCP服务
  • X-Forwarded-For解析
  • 海外短剧系统架构设计:从0到1搭建高并发微服务平台
  • 基础算法的系统性总结
  • 分布式微服务--RPC:原理、使用方式、与 HTTP/REST 的区别与选择
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-43,(知识点:晶体管、复合管、达林顿管)
  • 【iOS】类扩展与关联对象