当前位置:网站首页>关于利用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
},
边栏推荐
猜你喜欢
postman配置中文
spark中的cache和checkpoint
hashSet解析
502 bad gateway原因、解决方法
CISP-PTE Zhenti Demonstration
QT信号与槽
empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType),
MySQL的Replace用法详解
El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc
el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点
随机推荐
信息学奥赛一本通T1450:Knight Moves
IEEE RAL投初稿
postman配置中文
【云原生 · Kubernetes】Kubernetes简介及基本组件
VO、DTO、DO、POJO的区别和概念
MySQL 数据库基础知识(系统化一篇入门)
prometheus 监控mysql数据库
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
MySQL的Replace用法详解
ClickHouse 数据插入、更新与删除操作 SQL
DAC、ADC、FFT使用总结
nacos-2.0.3启动报错出现no datasource set的坑
Nacos与Eureka的区别
Laravel 中使用子查询
mysql or语句的优化
FiBiNet torch reproduction
cnpm的安装与使用
AR路由器如何配置Portal认证(二层网络)
RADIUS计费认证如何配置?这篇文章一步一步教你完成
empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType),