当前位置:网站首页>关于利用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
},
边栏推荐
猜你喜欢

保姆级讲解Transformer

El - tree to set focus on selected highlight highlighting, the selected node deepen background and change the font color, etc

【RT_Thread学习笔记】---以太网LAN8720A Lwip ping 通网络

Content type ‘applicationx-www-form-urlencoded;charset=UTF-8‘ not supported“【已解决】

PHP 获取服务器信息

Shell脚本--信号发送与捕捉

el-tree设置利用setCheckedNodessetCheckedKeys默认勾选节点,以及通过setChecked新增勾选指定节点

Autowired注解与Resource注解的区别

配置MSTP功能示例

pyspark df 二次排序
随机推荐
Charles抓包显示<unknown>解决方案
【云原生 · Kubernetes】Kubernetes简介及基本组件
linux安装mysql
AutoInt网络详解及pytorch复现
信息学奥赛一本通T1446:素数方阵
Autowired注解与Resource注解的区别
信息学奥赛一本通T1454:山峰和山谷
Postman知识汇总
MySQL必知必会
AlexNet网络详解及复现
信息学奥赛一本通T1448:深搜的剪枝技巧 电路维修
el-table gets the data attribute of a row in the read data table
MySQL忘记密码怎么办
关于任命韩文弢博士代理NOI科学委员会主席的公告
信息学奥赛一本通T1447:靶形数独
阿里云-武林头条-建站小能手争霸赛
Laravel 中使用子查询
UniApp 获取当前页面标题(navigationBarTitleText)
Spark 的架构与作业提交流程
sql优化常用的几种方法