使用vue + canvas绘制仪表盘

news2024/12/24 9:12:40

使用vue + canvas绘制仪表盘

效果图:
在这里插入图片描述

父容器

<template>
  <div class="panelBoard-page">
    <h1>panelBoard</h1>
    <Demo1 :rate="rate" />
  </div>
</template>
<script setup>
import { ref } from 'vue'
import Demo1 from './components/Demo1.vue'
const rate = ref(100)
</script>

<style lang="scss" scoped></style>

子容器中:

<template>
  <div class="demo1Container">
    <h2>demo1</h2>
    <div class="canvar-warp" ref="canvasWarp"></div>
  </div>
</template>

<script setup>
import { onMounted, ref } from 'vue'
const demo1 = ref(null)
const canvasWarp = ref(null)
const props = defineProps({
  rate: Number,
  default: 20
})
onMounted(async () => {
  const canvas = document.createElement('canvas')
  canvas.width = 300
  canvas.height = 150
  demo1.value = canvas
  canvasWarp.value.appendChild(canvas)
  // console.log(demo1.value.attributes, 'demo1')
  const ctx = demo1.value.getContext('2d')
  // let value = demo1.value.attributes['data-score'].value
  let value = props.rate
  const x0 = 150 // 圆心坐标
  const y0 = 148 // 圆心坐标
  const r1 = 140 // 半径
  const startAng = 180 // 起始角度
  const endAng = 0
  const numTicks = 51 // 刻度数量
  let blueAng = 180 + (value / 100) * 180
  ctx.beginPath()
  ctx.arc(x0, y0, r1, (Math.PI / 180) * 183, (Math.PI / 180) * blueAng, false)
  let linearGradient = ctx.createLinearGradient(0, 0, 300, 0)
  linearGradient.addColorStop(0, 'yellow')
  linearGradient.addColorStop(1, 'green')
  ctx.strokeStyle = linearGradient
  ctx.lineWidth = 6
  ctx.lineCap = 'round' // 线的末端设置
  ctx.stroke()
  // //添加刻度
  for (let i = 0; i <= numTicks; i++) {
    let angle = startAng + ((startAng - endAng) * i) / numTicks
    let innerRadius = r1 - 30 // 刻度内半径
    let outerRadius = r1 - 15 // 刻度外半径
    if ([0, 10, 20, 30, 40, 51].includes(i)) {
      innerRadius = r1 - 30 // 刻度内半径
      outerRadius = r1 - 15 // 刻度外半径
    } else {
      innerRadius = r1 - 20 // 刻度内半径
      outerRadius = r1 - 15 // 刻度外半径
    }
    let xInner = x0 + innerRadius * Math.cos((angle * Math.PI) / 180)
    let yInner = y0 + innerRadius * Math.sin((angle * Math.PI) / 180)
    let xOuter = x0 + outerRadius * Math.cos((angle * Math.PI) / 180)
    let yOuter = y0 + outerRadius * Math.sin((angle * Math.PI) / 180)

    ctx.beginPath()
    ctx.moveTo(xInner, yInner)
    ctx.lineTo(xOuter, yOuter)
    ctx.strokeStyle = '#fff'
    ctx.lineWidth = 2
    ctx.stroke()
  }
  // canvas中间的文字
  ctx.font = 'normal 16px PingFangSC-Medium' // 字体大小,样式
  ctx.fillStyle = '#000' // 颜色
  ctx.textAlign = 'center' // 位置
  ctx.textBaseline = 'middle' // 位置
  ctx.moveTo(50, 155) // 文字填充位置
  ctx.fillText('可用额度(元)', 150, 90)
  ctx.font = 'normal 24px PingFangSC-Regular' // 字体大小,样式
  ctx.fillStyle = 'green' // 颜色
  ctx.fillText('138,009.56', 150, 130)
})
</script>

<style lang="scss" scoped>
.demo1Container {
  width: 100%;
  background: linear-gradient(0deg, pink, skyblue, #00f);
}
</style>


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

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

相关文章

2024最新总结:1500页金三银四面试宝典 记录35轮大厂面试(都是面试重点)

学习是你这个职业一辈子的事 手里有个 1 2 3&#xff0c;不要想着去怼别人的 4 5 6&#xff0c;因为还有你不知道的 7 8 9。保持空瓶心态从 0 开始才能学到 10 全。 毕竟也是跳槽高峰期&#xff0c;我还是为大家准备了这份1500页金三银四宝典&#xff0c;记录的都是真实大厂面…

表格截图怎么转换成表格?6个软件帮助你快速进行表格转换

表格截图怎么转换成表格&#xff1f;6个软件帮助你快速进行表格转换 将表格截图转换为可编辑的表格文件是处理数据时常见的需求&#xff0c;特别是在需要分析或编辑图像中包含的信息时。以下是几款帮助你快速进行表格转换的软件和工具&#xff0c;它们提供了不同的功能和适用场…

LearnOpenGL - Android OpenGL ES 3.0 使用 FBO 进行离屏渲染

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

【Linux】对共享库加载问题的深入理解——基本原理概述

原理概述 【linux】详解——库-CSDN博客 共享库被加载后&#xff0c;系统会为该共享库创建一个结构&#xff0c;这个结构体中的字段描述了库的各种属性。在内存中可能会加载很多库&#xff0c;每一个库都用一个结构体描述。把这些结构体用一些数据结构管理起来&#xff0c;系…

短说V4.1.5及PC端V3.1.4正式版发布公告

Hi 大家好&#xff0c; 我是给你们带来惊喜的运营小番茄。 本期更新为短说 4.1.5和PC端3.1.4的正式版。 本次修复上个版本中的问题和功能优化&#xff0c;以及新增了如下功能&#xff1a; PC端支持发布秀米帖&#xff0c;可支持部分秀米格式&#xff1b;后台管理类消息新增…

shell编程之免交互(shell脚本)

Here Document 免交互 Here Document 概述 Here Document是一个特殊的用途的代码块。它在linux shell中使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如ftp&#xff0c;cat或read命令。Here Document 是标准输入的一种替代品&#xff0c;可以帮助脚本开…

postman忘记密码发邮件,久久收不到怎么办?

根本原因是需要FQ&#xff01;&#xff01;&#xff01; 重置密码的链接&#xff1a; https://identity.getpostman.com/trouble-signing-in 找个平台或者软件&#xff0c;访问这个链接即可完成修改密码后续操作&#xff0c;不用再傻傻等着验证码了。 有需要协助的朋友也可私信…

运算放大器(运放)输入偏置电流、失调电流

输入偏置电流定义 理想情况下&#xff0c;并无电流进入运算放大器的输入端。而实际操作中&#xff0c;始终存在两个输入偏置电流&#xff0c;即IB和IB-(参见图1)。 I B I_B IB​的值大小不一&#xff0c;在静电计AD549中低至60 fA(每三微秒通过一个电子)&#xff0c;而在某些高…

Linux CentOS 宝塔中禁用php8.2的eval函数详细图文教程

PHP_diseval_extension 这个方法是支持PHP8的, Suhosin禁用eval函数&#xff0c;不支持PHP8 一、安装 cd / git clone https://github.com/mk-j/PHP_diseval_extension.gitcd /PHP_diseval_extension/source/www/server/php/82/bin/phpize ./configure --with-php-config/ww…

似然 与 概率

概率似然概率函数与似然函数的关系似然与机器学习的关系最大似然估计 似然与概率分别是针对不同内容的估计和近似 概率 概率&#xff1a;概率表达给定参数 θ \theta θ下样本随机向量 X x \textbf{X} {x} Xx的可能性。 概率密度函数的定义形式是 f ( x ∣ θ ) f(x|\t…

【博士每天一篇文献-综述】A survey on few-shot class-incremental learning

阅读时间&#xff1a;2023-12-19 1 介绍 年份&#xff1a;2024 作者&#xff1a;田松松&#xff0c;中国科学院半导体研究所&#xff1b;李璐思&#xff0c;老道明大学助理教授&#xff1b;李伟军&#xff0c;中国科学院半导体研究所AnnLab&#xff1b; 期刊&#xff1a; Neu…

FastGPT部署和OneAPI部署

FastGPT模型管理 FastGPT只支持openai 格式的restful 的api接口。 就是 chat/completion那个接口。如果不理解可以参考这个文章 https://zhuanlan.zhihu.com/p/656959227 。 支持Python 。JAVA 等后端语言或者 http 访问 因此如果想访问大模型&#xff0c;有以下几种方案&…

一次tcpdump抓包过程

#查询网卡 tcpdump -D # 监听 21100 端口 网卡ens192 &#xff08;不知道网卡&#xff0c;可以直接不输入 -i 网卡&#xff09;TCP数据&#xff0c;等待一段时间&#xff0c;执行CtrlC&#xff0c;终止程序 tcpdump -x -s 0 -w /tmp/123.dump -i ens192 -p tcp port 21100 #…

《2024快手行业人群画像报告-大家电类目》

快手商业化品牌行业运营中心与快手商业化用户研究中心联合发布了一份名为《2024快手行业人群画像报告-大家电类目》的研究报告。 这份报告深入分析了大家电市场的用户画像,涵盖了品类划分、用户趋势、交易洞察、人群洞察、搜索洞察以及品牌认知等多个维度的详尽数据和洞察,为理…

海思平台使用ITTP_Stream调试sensor

目录 相关资料1.ISP相关资料2.MIPI RX相关资料3.sensor资料4.MIPI标准 准备工作1.准备sensor驱动2.准备sample vio3.准备上位机和下位机程序 运行1.只运行HiPQTool1.1.板端运行1.2.PC端运行HiPQTool 2.使用ITTP_Stream2.1.板端运行2.2.打开上位机软件 相关资料 1.ISP相关资料 …

基于哈尔小波基的一维密度估计(Python)

先说点其他的东西。 关于强非线性、强间断、多物理场强耦合或高度复杂几何形态问题能够得以有效求解的核心难题之一&#xff0c;是如何构建在多尺度情形、非线性作用下具有准确地识别、定位、捕获以及分离各个尺度特征尤其是小尺度局部特征能力的数值工具&#xff0c;这之中包…

C语言单链表的算法之遍历节点

一&#xff1a;什么是遍历 &#xff08;1&#xff09;遍历就是把单链表中的各个节点挨个拿出来&#xff0c;就叫遍历 &#xff08;2&#xff09;便利的要点&#xff1a;一是不能遗漏&#xff0c;二是不能重复追求效率 二&#xff1a;如何遍历单链表 &#xff08;1&#xff0…

element-plus 日期选择添加确定按钮

需求&#xff1a;选择日期后&#xff0c;点击确定按钮关闭面板 思路&#xff1a; 使用shortcuts自定义确定和取消按钮选择日期后使用handleOpen()强制开启面板点击确定后使用handleClose()关闭面板 <template><el-date-pickerref"pickerRef"v-model"…

能量智慧流转:全面升级储能电站的智能网关解决方案

监控系统是电化学储能电站的关键组成部分&#xff0c;储能电站也需要相应的监控系统&#xff0c;通过监控系统对储能设备的状态进行监测&#xff0c;实时感知储能设备的健康状态&#xff0c;控制储能设备的充放电功率和时机等&#xff0c; 一个好的监控系统可以实现储能电站安全…

微软发布Phi-3系列语言模型:手机端的强大AI助手

大模型&#xff08;LLMs&#xff09;在处理复杂任务时展现出的巨大潜力&#xff0c;但却需要庞大的计算资源和存储空间&#xff0c;限制了它们在移动设备等资源受限环境中的应用。微软公司最新发布的Phi-3系列语言模型&#xff0c;以其卓越的性能和小巧的体积&#xff0c;打破了…