javascript - 旋转圆形 Canvas javascript

标签 javascript html canvas

我在使用 HTML5 Canvas 旋转圆圈时遇到问题。我正在创建一个用作加载计的圆圈。现在,加载部分(浅绿色)从 45 度标记处开始。我似乎无法弄清楚如何让这部分从 0 度标记开始。任何帮助将不胜感激。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>guage</title>
  </head>
  <body>
    <canvas id="canvas" width="300" height="300"></canvas>
    <p>Your browser does not support canvas.</p>
    <script src="http://127.0.0.1:3000/guage.js" charset="utf-8"></script>
  </body>
</html>

对于 Javascript:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

//background color
ctx.fillStyle = "rgb(52, 70, 105)";
ctx.fillRect(0, 0, canvas.height, canvas.width);

//drawing circle
ctx.beginPath();
ctx.lineWidth = "20";
ctx.strokeStyle = "rgb(66, 70, 67)";
ctx.arc(150,125, 75, 0, 2 * Math.PI);
ctx.stroke();

//generate random number between 0.01 and 1.99 since
//fill of circle is created with respect to radians.
var precision = 3;
var rando = parseFloat(Math.min(0.01 + (Math.random() * (1.99 - 0.01)),1.99).toFixed(2));
//calculate percent for display in center.
var percent = Math.round((rando * 500) / 10);

//Create fill for circle
var angle = 90 * (Math.PI / 180);
ctx.beginPath();
ctx.lineWidth = "20";
ctx.strokeStyle = "rgb(24, 242, 92)";
ctx.arc(150,125, 75, 0, rando * Math.PI);
ctx.stroke();


//Create percent in middle of circle
ctx.font = "20px Verdana";
ctx.fillStyle = "rgb(24, 242, 92)";
ctx.fillText(percent +"%", 135, 135);

这是浏览器中输出的屏幕截图: 有没有办法将圆圈向后旋转 45 度?或者你们有没有我完全忽略了在这个例子中尝试的替代建议?

提前致谢!

最佳答案

创建圆时,需要将起始弧设置为顶部。 .arc() 的第四个参数是起始位置。只需将它设置为 -Math.PI/2,您将从顶部开始。

//Create fill for circle
var angle = 90 * (Math.PI / 180);
ctx.beginPath();
ctx.lineWidth = "20";
ctx.strokeStyle = "rgb(24, 242, 92)";
ctx.arc(150,125, 75, -Math.PI/2, rando * Math.PI); // The fourth argument here
ctx.stroke();

https://jsfiddle.net/3oknq4km/1/以供引用。 (尽管固定为 75%)

关于javascript - 旋转圆形 Canvas javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41007585/

相关文章:

javascript - 为了让浏览器知道始终使用缓存,我应该设置什么响应 header ?

javascript - 使用 "Select All"选项选择多个单选按钮

javascript - KineticJS 与可重复鼠标事件的问题

javascript - 当鼠标移动到对象上时发生闪烁 - Javascript

javascript - 当我们有很多动画时,canvas 不是应该比 dom 操作更快吗?

javascript - 如何使用 jQuery 和模糊事件确定哪个 DOM 对象被单击/聚焦?

javascript - onbeforeunload 事件未在我的代码中触发,但其他示例有效吗?

javascript - 悬停第二个或第三个元素时更改 CSS 第一个子元素

html - 带有 {float :right] Stretches Container in IE7 的 <span> 标签

html - 文本在 css 动画上微调