【发布时间】:2018-11-26 19:58:08
【问题描述】:
好吧 - 我想用画布和 JS 生成一种 纺车。我的轮子应该有 10 个段,我将它们保存为 .png 文件。
我想在 for 循环中绘制 10 个线段以获得“完整的圆圈”。
这是我到目前为止的代码。不幸的是,“轮子”看起来很毁——我找不到我的错误。
const segmentCount = 10;
let initializeWheel = function() {
let canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d");
let size = $(window).width() * 0.9;
canvas.width = canvas.height = size;
ctx.fillStyle = "red"
ctx.fillRect(0, 0, size, size)
for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex++) {
let image = new Image()
image.onload = function() {
let h = ((size / 2) / image.width) * image.height,
w = size / 2;
let x = size / 4,
y = h;
let degrees = segmentIndex * (360 / segmentCount)
ctx.save();
ctx.translate(x + w / 2, y + h / 2);
ctx.rotate(degrees * Math.PI / 180.0);
ctx.translate(-x - w / 2, -y - h / 2);
ctx.drawImage(image, x, y, w, h);
ctx.restore();
};
image.src = "https://i.stack.imgur.com/5PqtU.png"
}
$(canvas).appendTo(document.body)
}
initializeWheel()
canvas {
position: "absolute";
left: 0;
right: 0;
margin: "auto";
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
【问题讨论】:
-
不确定这是否是问题的一部分,但 Canvas 使用弧度,而不是圆/弧几何的度数。
2 * Math.PI为您提供 360 度 IIRC。 -
请再看看我的代码 Scott :)
-
这就是为什么我说“不确定这是否是问题的一部分”。我不是几何/数学专家,不确定您的代码在做什么。只是想确保你知道。我看到了 360 度的参考,并想知道。
标签: javascript jquery html css canvas