当前位置:网站首页>关于利用canvas画带箭头的直线旋转
关于利用canvas画带箭头的直线旋转
2022-08-03 05:42:00 【Carefree1990】
利用canvas在Vue项目中使用:
<img
id="range_right"
src=""
style="
position: absolute;
left: 0px;
bottom: 0px;
width: 100%;
z-index: 2;
"
/>//图片上面箭头旋转直线
GetArrow(eye_number) {
var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')
var img = document.getElementById('arrow_right')
var img2 = document.getElementById('range_left')
canvas.width = 128
canvas.height = 128
var w = canvas.width
var h = canvas.height
ctx.clearRect(0, 0, w, h)
angles = new Array(0, 30, 60, -90, -60, -30)
index = eye_number - 1
var urlData = this.DrawArrow(62, angles[index], true, 'green')
var urlData = canvas.toDataURL('image/png')
// img.src = urlData
img.src = urlData
img2.src = urlData
return urlData
},
GetMutiArrow(eye_number) {
var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')
canvas.width = 600
canvas.height = 400
var w = canvas.width
var h = canvas.height
ctx.clearRect(0, 0, w, h)
angles = new Array(0, 30, 60, -90, -60, -30)
for (index = 0; index < 6; index++) {
this.color = 'blue'
if (eye_number == index + 1) {
this.color = 'red'
}
this.DrawArrow(156, angles[index], false, this.color, 1)
}
var urlData = canvas.toDataURL('image/png')
return urlData
},
DrawArrow(value, angle, circle, color = 'blue', linewidth = 4) {
var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')
var img = document.getElementById('range_right')
var img2 = document.getElementById('arrow_left')
var w = canvas.width
var h = canvas.height
ctx.save() //保存当前画布
ctx.translate(w / 2, h / 2) //重新映射画布上的 (0,0) 位置。也就是画布的平移
ctx.rotate((angle * Math.PI) / 180) //画布的旋转
ctx.strokeStyle = color //颜色
ctx.lineWidth = linewidth
var centerX = 0
var centerY = 0
if (circle) {
ctx.beginPath() //路径
ctx.moveTo(centerX + value, centerX)
ctx.arc(
centerX,
centerX,
value,
(0 * Math.PI) / 180, // 返回 1(0 度的余弦)
(360 * Math.PI) / 180
)
ctx.stroke()
}
ctx.beginPath() //路径
ctx.moveTo(centerX - value, centerY)
ctx.lineTo(centerX + value, centerY)
ctx.stroke()
ctx.moveTo(centerX + value, centerY)
ctx.lineTo(centerX + value - 30, centerY - 10)
ctx.stroke()
ctx.moveTo(centerX + value, centerY)
ctx.lineTo(centerX + value - 30, centerY + 10)
ctx.stroke()
ctx.restore()
var urlData = canvas.toDataURL('image/png')
img.src = urlData
img2.src = urlData
},
边栏推荐
- MySQL的安装教程(嗷嗷详细,包教包会~)
- El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc
- 【云原生 · Kubernetes】Kubernetes简介及基本组件
- 【云原生 · Kubernetes】Kubernetes基础环境搭建
- CISP-PTE真题演示
- MySQL 流程控制
- AR路由器如何配置Portal认证(二层网络)
- 信息学奥赛一本通T1450:Knight Moves
- 关于NOI 2022的报到通知
- pyspark --- 空串替换为None
猜你喜欢
随机推荐
【经验分享】配置用户通过Console口登录设备示例
Mysql去除重复数据
Laravel 中使用子查询
postman配置中文
pyspark --- 统计多列的众数并一次返回
Cesium loads offline maps and offline terrain
关于Attention的超详细讲解
Nacos与Eureka的区别
10 common data types in MySQL
Getting Started with Chrome Plugin Development
MySQL忘记密码怎么办
5G网络入门基础--5G网络的架构与基本原理
el-tree设置选中高亮焦点高亮、选中的节点加深背景,更改字体颜色等
MySQL的10种常用数据类型
单节点部署 gpmall 商城系统(二)
CISP-PTE Zhenti Demonstration
el-tabs(标签栏)的入门学习
MySQL中,对结果或条件进行字符串拼接
ClickHouse 数据插入、更新与删除操作 SQL
MYSQL存储过程注释详解








