vue canvas绘制信令图二、

news2025/1/17 8:59:23

需求:根据信令图标题的每2个区域之间有无内容来给宽度,无内容区域的间隔要小一些。有内容区域的间隔大一些。


先上效果图:

从上面的效果图可以看出无内容区域的间隔宽度变小了很多。

1、先设置一个最先间隔的宽度:minGapX: 200,


2、然后设置一个 存放有计算后的间隔数据: titleAttrArr: []

3、 测算出坐标点离最左边的距离 

this.titleAttrArr = []
let offsetLeft = 0

4、标题title没有向右数据, 还得判断它的下一级有没有向左数据

let index = this.resultData.findIndex(
   (item) => item.startDataDir == v && item.dataDirStr === "上行"
 );
if (index === -1) {
   // title没有向右数据, 还得判断他的下一级有没有向左数据
   let index2 = this.resultData.findIndex(
    (item) =>
        item.startDataDir == this.showTitleArr[i + 1] && item.dataDirStr === "下行"
    );
   if (index2 === -1) {
       trueGap = this.minGapX;
    } else {
       trueGap = this.gapX;
    }
 } else {
   // 有向右数据说明是正常gap
   trueGap = this.gapX;
 }

5、画虚线和标题  以及对应方法里面的调整

 this.paintText(context, v, i, offsetLeft);
 this.drawDashed(context, i, offsetLeft);

6、画箭头的处理

        let kOffsetLeft = 0,
          jOffsetLeft = 0;
        this.titleAttrArr.map((item) => {
          if (v.startDataDir === item.titleName) {
            kOffsetLeft = item.offsetLeft;
          }
          if (v.endDataDir === item.titleName) {
            jOffsetLeft = item.offsetLeft;
          }
        });
        // 箭头
        this.paintArr(
          v,
          [kOffsetLeft + this.paddingLeft, height],
          [jOffsetLeft + this.paddingLeft, height],
          kOffsetLeft < jOffsetLeft ? "right" : "left",
          context
        );

7、全部代码如下:

<template>
	<vxe-modal v-model="sigModal" :title="titles" ref="vxeModal2" :width="modalWidth > 1200 ? modalWidth : 1200" min-width="1200" :height="dialogHeight" :position="{ top: '3vh'}" @close="closeEvent" resize destroy-on-close>
    <div ref="screen" class="canvasContain">
      <canvas id="myCanvas">
        你的浏览器还不支持canvas
      </canvas>
    </div>
    <!-- 倒计时提示 message -->
    <div id="message-container" v-if="showMess">
      <div class="message move-in">
        <span class="icon icon-success"> </span>
        <div class="text"> 信令图上传成功,<span style="font-weight: bold;">{
  { `${ this.count } ` }}</span>  秒后自动关闭 </div>
        <div class="close">
          <el-button type="text" @click="closeMessage">取消</el-button>
        </div>
      </div>
    </div>
  </vxe-modal>
</template>

<script>
import html2canvas from 'html2canvas'
import { DownLoadFromTime } from '@/utils/times.js'
import { get_signallInfo } from '@/api/c3/offlineImportant.js'
import axios from 'axios'
export default {
  data() {
    return {
      showMess: false,
      count: 3,
      timer: null,
      uploadId: '',			
      titles: '生成信令图',
			dialogWidth: '90%',
      dialogHeight: '92%',
			sigModal: false,
      // 'ATP'-----'MT'------------ 'BTS'-------'BSC'----'MSC'------ 'RBC'
      //   Igsmr-R   Um_AMS/Um_BMS      Abis           A      PRI
      resultTitle: [], // 后台返回的随机顺序
      titleresultTitleTypeArr: ['ATP', 'MT', 'BTS', 'BSC', 'MSC', 'RBC'],
      showTitleArr: []

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用python绘制日历热力图

使用python绘制日历热力图 日历热力图效果代码 日历热力图 日历热力图&#xff08;Calendar Heatmap&#xff09;是一种数据可视化图表&#xff0c;用于展示时间数据的分布和趋势。它将数据按天映射到一个日历中&#xff0c;通过颜色的变化表示每天的数据值大小。这种图表常用…

多级菜单的实现一

总共分享三种实现多级菜单方式&#xff0c;前面两种是裸机式的&#xff0c;第三种是带有FreeRTOS。 1、首先处在第一级菜单&#xff1a;显示 同时按下一项按钮&#xff0c;flag会变化&#xff0c;光标会根据flag的值&#xff0c;在界面上不同位置显示出光标 按下确定&#xff…

【Angew】:催化材料中贵金属的最大效率-原子分散表面铂

图形摘要&#xff1a;通过在纳米结构 CeO2的 {100}“纳米袋”中稳定表面 Pt2物种&#xff08;见图&#xff09; &#xff0c;可以制备具有最高贵金属分散度的Pt-CeO2材料。此类材料可以大大减少催化剂所需的贵金属量。 摘要&#xff1a;贵金属Pt是催化领域用途最广泛的元素&am…

如何一键批量下载淘宝高清主图、详情图、sku及视频信息

图片对电商至关重要&#xff0c;因为它们是商品展示的主要方式&#xff0c;直接影响消费者的购买决策。高质量的图片能够吸引顾客注意&#xff0c;提升产品吸引力&#xff0c;增加点击率和转化率。此外&#xff0c;好的图片还有助于建立品牌形象&#xff0c;提高客户信任度。 …

大模型时代的具身智能系列专题(十)

Sergey Levine团队 Sergey Levine目前是UC Berkeley电气工程与计算机科学系的副教授&#xff0c;同时是RAIL(Robotic AI&Learning LabBAIR)实验室主任。除了在Berkeley的教职&#xff0c;Levine也是Google Brain的研究员&#xff0c;他也参与了Google知名的机器人大模型PA…

OpenCV学习(4.3) 图像阈值

1.目的 在本教程中&#xff1a; 你会学到简单阈值法&#xff0c;自适应阈值法&#xff0c;以及 Otsu 阈值法(俗称大津法)等。你会学到如下函数&#xff1a;**cv.threshold&#xff0c;cv.adaptiveThreshold** 等。 2.简单阈值法 此方法是直截了当的。如果像素值大于阈值&am…

硕士课程可穿戴设备之第二次作业

虽然有三个例子&#xff0c;论文中展示的应该是第二个例子&#xff0c;但是找不到数据集&#xff0c;于是跑的第一个例子。 将该DNN模型应用于2017年生理信号挑战赛数据&#xff0c;跑通 配置环境 安装virtualenv 创建虚拟环境 virtualenv -p python3.6 ecg_env 激活虚拟环…

「网络编程」基于 UDP 协议实现回显服务器

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;计网 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 实现回显服务器 &#x1f349;socket api&#x1f349;回显服务器&#x1f34c;实现&#x1f95d;服务器&#x1f95d;客户端 &#x1f3…

使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱

使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱 在大数据处理和分析的场景中&#xff0c;Hadoop MapReduce是一种常见且高效的工具。本文将展示如何使用Hadoop MapReduce来分析邮件日志&#xff0c;提取邮件的发送状态&#xff08;成功、失败或退回&#xff09;和…

【TB作品】msp430f5529单片机墨水屏,口袋板,tmp421温度,温控风扇

文章目录 一、扬声器模块介绍二、驱动介绍三、程序介绍四、全部代码下载 msp430f5529d单片机墨水屏&#xff0c;口袋板&#xff0c;tmp421温度&#xff0c;温控风扇 基本要求&#xff1a;高于20度开转&#xff0c;温度越高转速越快&#xff0c;高于40度风扇停转&#xff0c;温…

本轮牛市新趋势,跟随The First捕捉牛市Alpha

与以往牛市“百花齐放”的繁荣景象相比&#xff0c;本轮牛市颇具独特走势&#xff0c;呈现出了资金集中度高、财富聚集效应小的特点&#xff0c;绝大部分加密资产甚至跑不赢BTC的涨幅幅度。而以往大放色彩的公链币价值币的走势&#xff0c;甚至比不过牛尾才爆发的MEME币。这使得…

【动手学深度学习】卷积神经网络CNN的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 卷积神经网络 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 特征提取和模式识别&#xff1a;CNN 在计算机视觉领域被广泛用于提取图像…

【Hive SQL 每日一题】统计指定范围内的有效下单用户

文章目录 测试数据需求说明需求实现 前言&#xff1a;本题制作参考牛客网进阶题目 —— SQL128 未完成试卷数大于1的有效用户 测试数据 -- 创建用户表 DROP TABLE IF EXISTS users; CREATE TABLE users (user_id INT,name STRING,age INT,gender STRING,register_date STRING…

ESP32S3——多线程

一、环境&#xff1a; 平台&#xff1a;arduino IDE 或 VS Code PlatformIO 皆可。 我的是后者&#xff0c;具体为&#xff1a; 框架&#xff1a;VS PlatformIO Arduino 二、硬件准备&#xff1a; 一个esp32s3 本文用到的是U0RXD&#xff08;GPIO44 &#xff09;与U0TXD…

文件无法在当前环境下执行在 x86_64 系统上运行 ARM 可执行文件

目录 遇到的问题是由于"..."文件无法在当前环境下执行。这个错误通常是因为二进制文件的格式不兼容&#xff0c;可能是因为它是为不同的架构编译的。例如&#xff0c;如果二进制文件是为 x86 架构编译的&#xff0c;但你在 ARM 设备上尝试运行它&#xff0c;就会出现…

[数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4107 标注数量(xml文件个数)&#xff1a;4107 标注数量(txt文件个数)&#xff1a;4107 标注…

【LeetCode】每日一题 2024_6_4 将元素分配到两个数组中 II(二分、离散化、树状数组)

文章目录 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01;题目&#xff1a;将元素分配到两个数组中 II题目描述代码与解题思路 每天进步一点点 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 又有段时间没写每日一题的分享了&#xff0c;原本今…

【前端】响应式布局笔记——flex

二、Flex Flex(FlexiableBox:弹性盒子&#xff0c;用于弹性布局&#xff0c;配合rem处理尺寸的适配问题)。 1、flex-direction:子元素在父元素盒子中的排列方式。 父级元素添加&#xff1a;flex-direction: row; 父级元素添加&#xff1a;flex-direction: row-reverse; 父…

练习实践-linux启动耗时分析

练习实践-启动耗时整体概览&#xff0c;具体服务的启动细节 参考来源&#xff1a; B站up主林哥讲运维&#xff1a;一分钟学会&#xff1a;可视化查看系统启动时的性能 如何使用Linux命令查看系统的启动进程&#xff08;linux查看启动进程&#xff09; 解决ubuntu开机变慢&…

LLaSM:Large language and speech model

1.Introduction 级联方法使用ASR将语音输入转化为文本输入,语音到文本会导致信息损失,本文提出LLaSM,一个具有跨模态对话能力的大型语音与语言模型,能够理解和遵循语音与语言指令,借鉴LLaVA,利用预训练的语音模态编码器和大语言模型,使用Whisper作为语音编码器,将语音…