vue集成svg大图拖拽无限放大缩小

news/2024/9/20 8:53:15/文章来源:https://www.cnblogs.com/chenyangjava/p/18336511

       vue项目中根据实际CAD图为参考,以及参看项目实际现场,手动绘制了一张线体、堆垛机、库区货架svg图,集成到vue页面中,svg图中可以交互接收C#发送过来的singalR实时数据。接收singalR的实时数据并显示到vue中,这里不作展开讲,可以参看笔者另一篇文章《vue若依集成C#的singalR接收实时数据》。

       早之前是页面右下角放了一个放大缩小按钮。通过点击放大缩小按钮,放大缩小控制svg图中的viewBox属性,来控制svg图的整体放大缩小。

1.在data() {return {    }}中定义缩放比例变量

 //缩放比例viewboxw: "0 0 2970 1271",

2.在index.vue页面中<template></template>标签内<svg></svg>使用viewboxw变量

<template><div class="allbgc"><div class="contentwid"><!-- // 需要拖动的dom --><div ref="dom" @wheel="wheel"><div class="svgdiv"><svg id="vehicleMonitorId" ref="mysvg" data-name="vehicleMonitorName" xmlns="http://www.w3.org/2000/svg":viewBox="viewboxw"><!-- <title>二楼上层</title> --><g><ellipse class="st0" cx="39.2" cy="106" rx="28.5" ry="32" /><g><g><g><g><g><text transform="matrix(1.2 0 0 1 18.1001 119.2002)" class="st1 st2 st3">1#</text></g></g></g></g></g></g></svg><clipPath id="clippath"><rect class="cls-3" x="1729.9" y="837.4" width="45.7" height="35.9" /></clipPath></div></div></div><div class="sjs">{{ sjxs }}</div></div>
</template>

是能放大缩小,有缺陷,只能已某一固定点(通常是页面左上角)为中心或者写死某一固定点放大缩小,后来觉得需要拿中心点(以中心点为中心放大缩小)比较困难,网上是有拿鼠标坐标或者svg图中坐标位中心点的方案 ,觉得不理想,没有实现,不是自己想要的效果,果断放弃。另寻他路。

  果然,在网上找到了适合自己项目的方案:panzoom。网上有svg-pan-zoom和panzoom方案,用svg-pan-zoom没有试验成功,后来用的panzoom,好用。svg标签外用panzoom包住就能轻松搞定无限放大缩小以及任意拖拽。

       话不多说,直接上代码。

1.npm安装panzoom插件svg图拖拽放大缩小用依赖包

npm install panzoom --save

2.importpanzoom包

//引入panzoom svg库
import Panzoom from "panzoom";

3.在mounted() { }中初始化zoom方法

mounted() {this.initPanZoom();
},

4.在methods: { }中定义initPanZoom()方法和wheel(){ }方法。

    //初始化svg缩放
    initPanZoom() {// 存放Panzoom用于后面的其他操作this.panzoom = Panzoom(this.$refs.dom, {// origin: "0 0", // 位置maxScale: 2, // 最大比例minScale: 0, // 最小比例overflow: "auto", // 溢出canvas: true, // 是否视为canvas// dblZoom: false, // 双击放大禁用
      });},wheel(event) {},       

5.index.vue中<template></template>标签内<svg></svg>外层包一层<div ref="dom" @wheel="wheel"></div>

<template><div class="allbgc"><div class="contentwid"><!-- // 需要拖动的dom --><div ref="dom" @wheel="wheel"><div class="svgdiv"><svgid="vehicleMonitorId"ref="mysvg"data-name="vehicleMonitorName"xmlns="http://www.w3.org/2000/svg":viewBox="viewboxw"><!-- <title>二楼上层</title> --><g><ellipse class="st0" cx="39.2" cy="106" rx="28.5" ry="32" /><g><g><g><g><g><texttransform="matrix(1.2 0 0 1 18.1001 119.2002)"class="st1 st2 st3">1#</text></g></g></g></g></g></g></svg><clipPath id="clippath"><rectclass="cls-3"x="1729.9"y="837.4"width="45.7"height="35.9"/></clipPath></div></div></div><div class="sjs">{{ sjxs }}</div></div>
</template>        

6.看效果。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/776188.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

积目社交app应用深度剖析:定位、功能与用户生态

一、产品概述 积目是一款主打青年文化领域的陌生人社交App,成立于2016年9月。它致力于提高用户质量,为青年群体提供基于兴趣的社交服务。积目的业务涵盖了看照滑卡牌、青年社区、共鸣匹配、线下活动等多个方面,旨在打造一个全方位的社交娱乐平台。二、用户分析 用户特征: 积…

抖音私信如何跳转微信,抖音卡片制作教程

在社交媒体平台中,抖音和微信都是非常受欢迎的应用程序。抖音是一款短视频分享平台,而微信是一款社交聊天应用。有时候,我们可能希望将抖音视频分享到微信上,但是却无法直接在抖音上找到跳转微信的功能。所以在本文中,我们将探讨如何生成抖音跳转微信链接的方法。 首先,我…

比较基因组学流程

1、OrthoFinder 教程 用于比较基因组学的系统发育直系学推断 1.1 orthofinder介绍OrthoFinder是一种快速、准确和全面的比较基因组学分析工具。它可以找到直系和正群,为所有的正群推断基因树,并为所分析的物种推断一个有根的物种树。OrthoFinder还为比较基因组分析提供全面的…

记一次拿到网站管理员账号密码的渗透

信息收集 第一步肯定是老生常谈的信息收集了,这次,首先是给了一个域名,我拿到之后,先是去收集了一些基本信息,如ip等等,但由于是个门户网站,没找到什么打的地方,便用fscan进行了c段扫描 fscan.exe -h ip/24 得到了很多,也都去看了一遍,在其中一个网站...... 探索 前面…

AlertManager简介与使用

目录一、AlertManager简介AlertManager 常用的功能Prometheus 和 AlertManager 的关系二、分组、抑制、静默分组抑制静默三、Alertmanager部署基于k8s部署PVC资源 alertmanager-storage.yamlConfigMap(邮件方式)deploy.yaml创建svc.yamlingress.yaml四、Prometheus添加告警配…

汽车虚拟仿真应用存在的几大挑战及解决方案

汽车虚拟仿真是指利用软件和数学模型,模拟汽车的设计、制造、测试和运行等过程,以及汽车与环境、驾驶员、乘客等的交互.实时云渲染技术可以将汽车虚拟仿真应用的运行画面,以可实时交互的视频流的形式推送到用户终端.汽车虚拟仿真是指利用软件和数学模型,模拟汽车的设计、制造、…

19C-ORA-00800

原文:https://www.xifenfei.com/2022/11/ora-00800.html 在一套19.16 的linux 2节点rac库中,使用sqlplus启动数据库成功,但是alert日志报 ORA-00800: soft external error, arguments: [Set Priority Failed] ***alter 日志信息2024-07-31T11:31:33.381384+08:00Starting back…

C-V2X安全证书:保障车路云系统通信安全的关键

前言随着智能网联(C-V2X)技术和车路云一体化系统的快速发展,汽车、道路和云端之间的信息交换变得越来越频繁和复杂。在这个信息高度互联的时代,如何确保车路云一体化通信的安全性成为了亟待解决的问题。车路云一体化系统与C-V2X安全证书车路云一体化系统通过新一代信息与通…

python 音频处理(1)——重采样、音高提取

python音频处理 音高提取 f0 提取pitch基频特征 torchaudio resample 重采样采集数据->采样率调整使用torchaudio进行重采样(cpu版)首先导入相关包,既然使用torch作为我们的选项,安装torch环境我就不必多说了,如果你不想用torch可以使用后文提到的另一个库1 import to…

信呼OA2.6.3文件上传漏洞

感觉过程还是蛮简单的,主要思路没有见过。 危险函数createtxt()侵权声明 本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。 如果您是版权持有人,并且认…

一次动态接口替换经历

接口改造 背景 现有旧订单接口 orderDetail,该接口会返回全量节点,部分节点不会使用因此造成了冗余,给数据库造成了较大压力,因此改造新接口 basicOrderDetail(xxx) 支持传入需要赋值的节点,方便赋值。 有如下改造方案:现有多个其他部分接口调用当前 orderDetail 接口获取…

智算引领,数耀鹭岛!天翼云与厦门电信共筑智算时代新底座!

在数字化浪潮的推动下,算力已成为推动社会进步的重要力量。近日,由厦门市数据管理局指导,天翼云科技有限公司、中国电信有限公司厦门分公司(以下简称“厦门电信”)主办的“智算引领 数耀鹭岛”——厦门智算中心(电信中心)发布会暨算力补贴政策宣贯会在福建厦门成功举办。…