使用vue + canvas绘制仪表盘

使用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 = 300canvas.height = 150demo1.value = canvascanvasWarp.value.appendChild(canvas)// console.log(demo1.value.attributes, 'demo1')const ctx = demo1.value.getContext('2d')// let value = demo1.value.attributes['data-score'].valuelet value = props.rateconst x0 = 150 // 圆心坐标const y0 = 148 // 圆心坐标const r1 = 140 // 半径const startAng = 180 // 起始角度const endAng = 0const numTicks = 51 // 刻度数量let blueAng = 180 + (value / 100) * 180ctx.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 = linearGradientctx.lineWidth = 6ctx.lineCap = 'round' // 线的末端设置ctx.stroke()// //添加刻度for (let i = 0; i <= numTicks; i++) {let angle = startAng + ((startAng - endAng) * i) / numTickslet 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 = 2ctx.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.mzph.cn/news/861041.shtml

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

相关文章

HTTP详解:TCP三次握手和四次挥手

一、TCP协议概述 TCP协议是互联网协议栈中传输层的核心协议之一&#xff0c;它提供了一种可靠的数据传输方式&#xff0c;确保数据包按顺序到达&#xff0c;并且没有丢失或重复。TCP的主要特点包括&#xff1a; 面向连接&#xff1a;TCP在传输数据之前需要建立连接。可靠传输&…

友思特分享 | 完美聚光:用于光刻曝光的UV-LED光引擎

导读 LED替代汞灯在紫外光源中的使用已成为大势所趋。友思特先进的 UV-LED-EXP 系统可作为OEM集成、汞灯光刻设备改造或直接定制光路设计和曝光设备&#xff0c;为紫外光源的半导体光刻曝光过程提供近乎完美的光照质量。 汞弧灯与UV LED 汞弧灯是高强度气体放电灯。简单地解释…

一起学Transformer(1) - Transformer 基础概念

文章目录 一、 Hugging Face 简介1. 公司背景和发展历程2. Transformers 库的功能和应用场景1&#xff09;功能2&#xff09; 应用场景 3. Transformer 模型概述 二、 Transformer 结构简介1. 常见的 Transformer 模型1&#xff09; BERT (Bidirectional Encoder Representatio…

网上购物商城

摘 要 本论文基于Java语言设计与实现了一个网上购物商城系统。首先&#xff0c;通过对国内外网上购物商城的发展现状进行分析&#xff0c;确定了本系统的研究目的与意义。然后&#xff0c;进行了系统需求分析&#xff0c;包括可行性分析和业务需求描述&#xff0c;以及软硬件需…

鸿蒙开发系统基础能力:【@ohos.pasteboard (剪贴板)】

剪贴板 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import pasteboard from ohos.pasteboard;属性 系统能力: 以下各项对应的系统能力均为SystemCapability.MiscServices.Pasteb…

mybatis的SQL打印说明

打印SQL记录子类: org.apache.ibatis.logging.jdbc.PreparedStatementLogger extends BaseJdbcLogger implements InvocationHandler org.apache.ibatis.logging.jdbc.ConnectionLogger extends BaseJdbcLogger implements InvocationHandler org.apache.ibatis.logging.jdbc.…

Token详解

一&#xff1a;Token是什么 token是具有访问权限的令牌&#xff0c;其本质是一串字符串。 如何创建token 用户在登录页面&#xff0c;输入账号和密码能够成功登录后&#xff1b;由后端签发并返回 token作用 用来判断用户当前的登录状态&#xff0c;根据当前用户登录状态给…

解析Java中的数据缓存技术

解析Java中的数据缓存技术 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序中&#xff0c;数据缓存是一种常用的技术手段&#xff0c;用于提高系…

升级外贸ERP保留历史数据,拥抱技术革新赢得未来

一些做了二十多年外贸的老公司&#xff0c;早期就通过使用ERP软件来进行订单的处理&#xff0c;但是随着互联网的发展&#xff0c;用的年岁久了&#xff0c;软件运行速度也变卡了&#xff0c;看到别人家的新功能也眼馋&#xff0c;但是就是不敢升级&#xff0c;担心一升级&…

「51媒体」浙江地区媒体邀约

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 浙江地区的媒体邀约资源丰富多样&#xff0c;涵盖了电视台…

vue3+swiper11 横向的循环切换图片

利用Swiper制作横向循环图片 <template><div class"summaryE"><div class"E_two"><swiper :slidesPerView"5" loop:autoplay"{ delay: 5000, disableOnInteraction: true }":navigation"true" :pagina…

这样的计算机视觉教材,你喜欢吗?

本文介绍了一本MIT出版社2024年出版的一本新书&#xff0c;涵盖了计算机视觉的最新理论和方法&#xff0c;主题覆盖面非常广泛&#xff0c;图书包含了大量精美图片&#xff0c;可视化呈现了计算机视觉的最新理论和方法&#xff0c;思路非常清晰。 具体介绍请点击如下链接&…

OpenHarmony开发中的知识:区分工程级与模块级—package.json

从OHPM 5.0.0版本开始&#xff0c;支持区分工程级与模块级oh-package.json5配置。其中&#xff1a; 工程级oh-package.json5文件&#xff1a;位于工程根目录下&#xff0c;主要用来描述全局配置&#xff0c;如&#xff1a;依赖覆盖&#xff08;overrides&#xff09;、依赖关系…

python中三种多行输入的方式

1. import fileinputlines [] for line in fileinput.input(): # 默认读取标准输入&#xff0c;也可以指定文件名lines.append(line.strip()) # strip() 可以移除每行末尾的换行符 for i in lines:print(i) 2. import sys strList [] for line in sys.stdin: # 当没有接…

调和级数枚举,LeetCode 1819. 序列中不同最大公约数的数目

一、题目 1、题目描述 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如&#xff0c;序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序列&#xff0c;可以通过删除数组中的某些元素&#xff0…

MySQL索引、事务

一&#xff1a;MySQL 索引介绍 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分庞大的时候&#xff0c;索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过…

服务器硬件,raid配置

文章目录 服务器硬件RAID磁盘阵列RAID 0RAID 1RAID 5RAID 6RAID 10 阵列卡&#xff0c;阵列卡的缓存阵列卡阵列卡的缓存 软RAID磁盘阵列RAID阵列的管理及设备恢复mdadm 服务器硬件 处理器(CPU)&#xff1a;服务器的核心组件&#xff0c;负责执行计算和指令操作。服务器常使用多…

为什么不选择使用原生的 NIO 而选择使用 Netty 模式呢?

引言&#xff1a;在开发和设计高性能网络应用时&#xff0c;选择合适的技术框架至关重要。在 Java 领域&#xff0c;原生的 NIO&#xff08;Non-blocking I/O&#xff09;提供了一种非阻塞的 I/O 操作方式&#xff0c;但它的复杂性和低级别的 API 常常让开发者面临挑战。相较之…

电商 API 接口:连接数字商业的关键纽带

在当今数字化驱动的商业世界中&#xff0c;电商行业正以前所未有的速度蓬勃发展&#xff0c;成为了经济增长的重要引擎。而在这繁荣景象的背后&#xff0c;电商 API 接口扮演着至关重要的角色&#xff0c;宛如一条无形的纽带&#xff0c;将各个环节紧密相连&#xff0c;为电商业…

解决Java中多线程同步问题的方案

解决Java中多线程同步问题的方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;多线程同步问题是我们经常面对的挑战之一。正确处理…