使用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,一经查实,立即删除!

相关文章

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

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

网上购物商城

摘 要 本论文基于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;根据当前用户登录状态给…

升级外贸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…

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

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

单片机是否有损坏,怎沫判断

目录 1、操作步骤&#xff1a; 2、单片机损坏常见原因&#xff1a; 3、 单片机不工作的原因&#xff1a; 参考&#xff1a;细讲寄存器读写与Bit位操作原理--单片机C语言编程Bit位的与或非屏蔽运算--洋桃电子大百科P019_哔哩哔哩_bilibili 1、操作步骤&#xff1a; 首先需要…

Zed+AD9361项目独立移植到windows中

首先下载HDL和NO-OS项目 git clone --recursive https://github.com/analogdevicesinc/hdl git clone --recursive https://github.com/analogdevicesinc/no-OS下载完成后需要更换版本&#xff0c;要与ubuntu中下载的vivado版本相同&#xff0c;使用如下命令进行查看版本&…

基于JSP的沙县小吃点餐系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、MySQL、WAMP服务器 系统展示 管理员…

安卓99手游加速器v1.7.0永久免费版

在当前的数字时代&#xff0c;许多应用程序为用户提供了丰富的服务与特权&#xff0c;但往往伴随着VIP特权的限制。今天&#xff0c;我们将介绍一种全新的解锁说明&#xff0c;这将改变用户体验&#xff0c;为大家带来前所未有的便利。这种方法能完美解锁各类应用的VIP特权&…

Redis-实战篇-实现商铺缓存与数据库的双写一致(超时剔除和主动更新)

文章目录 1、给查询商铺的缓存添加超时剔除和主动更新的策略2、根据id查询店铺2.1、queryById2.2、RedisConstants.java 3、根据id修改店铺3.1、ShopController.java3.2、update 1、给查询商铺的缓存添加超时剔除和主动更新的策略 修改ShopController中的业务逻辑&#xff0c;满…

频率和时间单位换算表

1. 频率单位和计数单位的换算关系 1.1 频率换算关系 1 MHz 等于 10^6 Hz 1.2 常用计数单位及其换算关系 1000 K 1 M 1000 M 1 G 分别表示&#xff1a; K (千) 10^3 M (兆) 10^6 G (吉) 10^9 2. 时间与频率的关系 频率&#xff08;Frequency&#xff09;和周期&#xff0…

【学习笔记】Hive

Hive 作为数仓应用工具&#xff0c;对比 RDBMS&#xff08;关系型数据库&#xff09; 有3个“不能”&#xff1a; 不能像 RDBMS 一般实时响应&#xff0c;Hive 查询延时大&#xff1b; 不能像 RDBMS 做事务型查询&#xff0c;Hive 没有事务机制&#xff1b; 不能像 RDBMS 做行…

76. 最小覆盖子串(困难)

76. 最小覆盖子串 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;76. 最小覆盖子串 2.详细题解 在s中寻找一个最短的子串&#xff0c;使之包含t中的所有字符&#xff0c;t中可能存在多个相同字符&#xff0c;寻找的子串也应至少含有…

格式化输出软件

一个给图片修改名字的小软件 功能&#xff1a; 输入文件名字&#xff0c;生成一个”当前时间文件名“的格式化内容到剪贴板方便改名 主界面有个复选框&#xff0c;勾选后会生成”文件名当前时间“的内容 演示&#xff1a; 输入无效字符时 代码&#xff1a; import sys from…

ctr/cvr预估之DeepFM模型

ctr/cvr预估之DeepFM模型 在数字营销的浪潮中&#xff0c;点击率&#xff08;CTR&#xff09;和转化率&#xff08;CVR&#xff09;预估已成为精准广告投放和个性化推荐系统的核心。随着深度学习技术的蓬勃发展&#xff0c;传统的机器学习方法&#xff0c;如逻辑回归和因子分解…

【Python】Python异常处理及常见错误详解

Python是一种动态类型的高级编程语言&#xff0c;其简单易懂的语法和强大的功能使其成为当今最流行的编程语言之一。然而&#xff0c;在编写Python代码时&#xff0c;我们难免会遇到各种错误。理解和处理这些错误是每个Python开发者必备的技能。本文将深入探讨Python中的异常处…