【发布时间】:2018-01-13 20:08:07
【问题描述】:
我现在正在尝试深入了解画布和 JavaScript。现在我正在使用 JavaScript 在 HTML 画布上绘制图像。我可以成功绘制图像。但是我在填充颜色时遇到问题。这是我使用 JavaScript 和 canvas 绘制的图片。
这是 JavaScript 代码。
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
//circles
var center_y = 150;//Y
var center_x = 150;
var lineWidth = 10;
context.lineWidth=lineWidth;
context.beginPath();
context.arc(center_x,center_y ,50,0,2*Math.PI);
context.strokeStyle = "#FF00FF";
context.stroke();
context.beginPath();
context.arc(center_x,center_y ,40,0,2*Math.PI);
context.strokeStyle = "#990000";
context.stroke();
context.beginPath();
context.arc(center_x,center_y ,30,0,2*Math.PI);
context.strokeStyle = "#0099CC";
context.stroke();
context.lineWidth = 1;
x1 = 150;
y1 = 150;
r = 140;
theta = 0.5;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
theta = 1;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
theta = 1.5;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
theta = 2;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
theta = 2.5;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
theta = 3;
context.moveTo(x1, y1);
context.lineTo(x1 + r * Math.cos(theta), y1 + r * Math.sin(theta));
context.stroke();
基本上,我正在做的是从小到大绘制具有相同中心的圆圈。然后从同一中心画线,每条线画完后,度数相等。是的,图像绘制成功。但是我想要实现的目标存在问题。如您所见,为了给圆圈着色,我将圆圈的线设置为 10 并设置线的颜色。所以整条圆线只有一种颜色。但我想做的是我想为圆圈的每个部分设置不同的颜色。我通过以下几行分隔来设置部分。
所以,我想要做的是,我想为圆圈“1”的部分 B 设置不同的颜色,以此类推。在 Microsoft Paint 软件中,如果我们绘制一个部分,如果该部分的边框正确,则仅绘制边框区域部分。所以,我想做这样的事情。
【问题讨论】:
标签: javascript html canvas