hxjdt.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. //进度条1
  2. function hxjdt1(total,now){
  3. var radius = 60 //外环半径
  4. var thickness = 7 //圆环厚度
  5. var innerRadius = radius - thickness //内环半径
  6. var startAngle = 0 //开始角度
  7. var endAngle = 360 //结束角度
  8. var x = 0 //圆心x坐标
  9. var y = 0 //圆心y坐标
  10. var canvas = document.getElementById('tutorial1');
  11. canvas.width = 133;
  12. canvas.height = 133;
  13. var ctx = canvas.getContext('2d');
  14. ctx.translate(canvas.width / 2, canvas.height / 2); //将绘图原点移到画布中央
  15. ctx.rotate(angle2Radian(225)) //将画布旋转225度
  16. ctx.fillStyle = "#eee"; //初始填充颜色
  17. renderRing(startAngle, endAngle)
  18. //渲染函数
  19. function renderRing(startAngle, endAngle) {
  20. ctx.beginPath();
  21. //绘制外环
  22. ctx.arc(x, y, radius, angle2Radian(startAngle), angle2Radian(endAngle))
  23. //计算外环与内环第一个连接处的中心坐标
  24. var oneCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, endAngle)
  25. //绘制外环与内环第一个连接处的圆环
  26. ctx.arc(oneCtrlPoint.x, oneCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  27. // //绘制内环
  28. ctx.arc(x, y, innerRadius, angle2Radian(endAngle), angle2Radian(startAngle), true)
  29. //计算外环与内环第二个连接处的中心坐标
  30. var twoCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, startAngle)
  31. //绘制外环与内环第二个连接处的圆环
  32. ctx.arc(twoCtrlPoint.x, twoCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  33. ctx.fill()
  34. // ctx.stroke()
  35. }
  36. //计算圆环上点的坐标
  37. function calcRingPoint(x, y, radius, angle) {
  38. var res = {}
  39. res.x = x + radius * Math.cos(angle * Math.PI / 180)
  40. res.y = y + radius * Math.sin(angle * Math.PI / 180)
  41. return res
  42. }
  43. //弧度转角度
  44. function radian2Angle(radian) {
  45. return 180 * radian / Math.PI
  46. }
  47. //角度转弧度
  48. function angle2Radian(angle) {
  49. return angle * Math.PI / 180
  50. }
  51. //进度条颜色
  52. var lingrad = ctx.createLinearGradient(0, 0, 150, 0);
  53. lingrad.addColorStop(0, '#11adff');
  54. lingrad.addColorStop(1, '#621dff');
  55. ctx.fillStyle = lingrad
  56. //开始绘画
  57. var tempAngle = startAngle
  58. var total = Number(total) ; //总分
  59. var now = Number(now) ; //当前分数
  60. var percent = now / total //百分比
  61. var twoEndAngle = percent * 360 + startAngle
  62. var step = (twoEndAngle - startAngle) / 80
  63. var numberSpan = document.querySelector('.number1')
  64. var inter = setInterval(() => {
  65. if (tempAngle > twoEndAngle) {
  66. clearInterval(inter)
  67. } else {
  68. numberSpan.innerText = now
  69. tempAngle += step
  70. // numberSpan.innerText = percent * 100
  71. // tempAngle += step
  72. }
  73. renderRing(startAngle, tempAngle)
  74. }, 20)
  75. }
  76. //进度条2
  77. function hxjdt2(total,now){
  78. var radius = 60 //外环半径
  79. var thickness = 7 //圆环厚度
  80. var innerRadius = radius - thickness //内环半径
  81. var startAngle = 0 //开始角度
  82. var endAngle = 360 //结束角度
  83. var x = 0 //圆心x坐标
  84. var y = 0 //圆心y坐标
  85. var canvas = document.getElementById('tutorial2');
  86. canvas.width = 133;
  87. canvas.height = 133;
  88. var ctx = canvas.getContext('2d');
  89. ctx.translate(canvas.width / 2, canvas.height / 2); //将绘图原点移到画布中央
  90. ctx.rotate(angle2Radian(225)) //将画布旋转225度
  91. ctx.fillStyle = "#eee"; //初始填充颜色
  92. renderRing(startAngle, endAngle)
  93. //渲染函数
  94. function renderRing(startAngle, endAngle) {
  95. ctx.beginPath();
  96. //绘制外环
  97. ctx.arc(x, y, radius, angle2Radian(startAngle), angle2Radian(endAngle))
  98. //计算外环与内环第一个连接处的中心坐标
  99. var oneCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, endAngle)
  100. //绘制外环与内环第一个连接处的圆环
  101. ctx.arc(oneCtrlPoint.x, oneCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  102. // //绘制内环
  103. ctx.arc(x, y, innerRadius, angle2Radian(endAngle), angle2Radian(startAngle), true)
  104. //计算外环与内环第二个连接处的中心坐标
  105. var twoCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, startAngle)
  106. //绘制外环与内环第二个连接处的圆环
  107. ctx.arc(twoCtrlPoint.x, twoCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  108. ctx.fill()
  109. // ctx.stroke()
  110. }
  111. //计算圆环上点的坐标
  112. function calcRingPoint(x, y, radius, angle) {
  113. var res = {}
  114. res.x = x + radius * Math.cos(angle * Math.PI / 180)
  115. res.y = y + radius * Math.sin(angle * Math.PI / 180)
  116. return res
  117. }
  118. //弧度转角度
  119. function radian2Angle(radian) {
  120. return 180 * radian / Math.PI
  121. }
  122. //角度转弧度
  123. function angle2Radian(angle) {
  124. return angle * Math.PI / 180
  125. }
  126. //进度条颜色
  127. var lingrad = ctx.createLinearGradient(0, 0, 150, 0);
  128. lingrad.addColorStop(0, '#009a66');
  129. lingrad.addColorStop(1, '#31fb66');
  130. ctx.fillStyle = lingrad
  131. //开始绘画
  132. var tempAngle = startAngle
  133. var total = Number(total); //总分
  134. var now = Number(now); //当前分数
  135. var percent = now / total //百分比
  136. var twoEndAngle = percent * 360 + startAngle
  137. var step = (twoEndAngle - startAngle) / 80
  138. var numberSpan = document.querySelector('.number2')
  139. var inter = setInterval(function() {
  140. if (tempAngle > twoEndAngle) {
  141. clearInterval(inter)
  142. } else {
  143. numberSpan.innerText = now
  144. tempAngle += step
  145. }
  146. renderRing(startAngle, tempAngle)
  147. }, 20);
  148. }
  149. //进度条3
  150. function hxjdt3(total,now) {
  151. var radius = 60 //外环半径
  152. var thickness = 7 //圆环厚度
  153. var innerRadius = radius - thickness //内环半径
  154. var startAngle = 0 //开始角度
  155. var endAngle = 360 //结束角度
  156. var x = 0 //圆心x坐标
  157. var y = 0 //圆心y坐标
  158. var canvas = document.getElementById('tutorial3');
  159. canvas.width = 133;
  160. canvas.height = 133;
  161. var ctx = canvas.getContext('2d');
  162. ctx.translate(canvas.width / 2, canvas.height / 2); //将绘图原点移到画布中央
  163. ctx.rotate(angle2Radian(225)) //将画布旋转225度
  164. ctx.fillStyle = "#eee"; //初始填充颜色
  165. renderRing(startAngle, endAngle)
  166. //渲染函数
  167. function renderRing(startAngle, endAngle) {
  168. ctx.beginPath();
  169. //绘制外环
  170. ctx.arc(x, y, radius, angle2Radian(startAngle), angle2Radian(endAngle))
  171. //计算外环与内环第一个连接处的中心坐标
  172. var oneCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, endAngle)
  173. //绘制外环与内环第一个连接处的圆环
  174. ctx.arc(oneCtrlPoint.x, oneCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  175. // //绘制内环
  176. ctx.arc(x, y, innerRadius, angle2Radian(endAngle), angle2Radian(startAngle), true)
  177. //计算外环与内环第二个连接处的中心坐标
  178. var twoCtrlPoint = calcRingPoint(x, y, innerRadius + thickness / 2, startAngle)
  179. //绘制外环与内环第二个连接处的圆环
  180. ctx.arc(twoCtrlPoint.x, twoCtrlPoint.y, thickness / 2, angle2Radian(-90), angle2Radian(270))
  181. ctx.fill()
  182. // ctx.stroke()
  183. }
  184. //计算圆环上点的坐标
  185. function calcRingPoint(x, y, radius, angle) {
  186. var res = {}
  187. res.x = x + radius * Math.cos(angle * Math.PI / 180)
  188. res.y = y + radius * Math.sin(angle * Math.PI / 180)
  189. return res
  190. }
  191. //弧度转角度
  192. function radian2Angle(radian) {
  193. return 180 * radian / Math.PI
  194. }
  195. //角度转弧度
  196. function angle2Radian(angle) {
  197. return angle * Math.PI / 180
  198. }
  199. //进度条颜色
  200. var lingrad = ctx.createLinearGradient(0, 0, 150, 0);
  201. lingrad.addColorStop(0, '#ffbd11');
  202. lingrad.addColorStop(1, '#ff981e');
  203. ctx.fillStyle = lingrad
  204. //开始绘画
  205. var tempAngle = startAngle
  206. var total = Number(total); //总分
  207. var now = Number(now); //当前分数
  208. var percent = now / total //百分比
  209. var twoEndAngle = percent * 360 + startAngle
  210. var step = (twoEndAngle - startAngle) / 80
  211. var numberSpan = document.querySelector('.number3')
  212. var inter = setInterval(function () {
  213. if (tempAngle > twoEndAngle) {
  214. clearInterval(inter)
  215. } else {
  216. numberSpan.innerText = now
  217. tempAngle += step
  218. }
  219. renderRing(startAngle, tempAngle)
  220. }, 20);
  221. }