繁体   English   中英

在html5中构建色轮

[英]building a color wheel in html5

我正在学习关于html5画布的一些细节,并且在进展中,我试图通过楔子构建一个简单的色轮(一次构建1度楔形并将其加到360度)。 但是,我在渐变上得到一些奇怪的标记,如下图所示:

奇怪的颜色标记

这是制作色轮的小提琴: http//jsfiddle.net/53JBM/

特别是,这是JS代码:

var canvas = document.getElementById("picker");
var context = canvas.getContext("2d");
var x = canvas.width / 2;
var y = canvas.height / 2;
var radius = 100;
var counterClockwise = false;

for(var angle=0; angle<=360; angle+=1){
    var startAngle = (angle-1)*Math.PI/180;
    var endAngle = angle * Math.PI/180;
    context.beginPath();
    context.moveTo(x, y);
    context.arc(x, y, radius, startAngle, endAngle, counterClockwise);
    context.closePath();
    context.fillStyle = 'hsl('+angle+', 100%, 50%)';
    context.fill();
}

如果有人能够指出我做错了什么,或者有更好的方法来完成我试图做的事情,那将非常感激:)

这对你来说够了,请检查

var startAngle = (angle-2)*Math.PI/180;

试试这个看起来很棒。 谢谢你的方式,这正是我想要做的。

 var canvas = document.getElementById("picker"); var context = canvas.getContext("2d"); var x = canvas.width / 2; var y = canvas.height / 2; var radius = 100; var counterClockwise = false; for(var angle=0; angle<=360; angle+=1){ var startAngle = (angle-2)*Math.PI/180; var endAngle = angle * Math.PI/180; context.beginPath(); context.moveTo(x, y); context.arc(x, y, radius, startAngle, endAngle, counterClockwise); context.closePath(); var gradient = context.createRadialGradient(x, y, 0, x, y, radius); gradient.addColorStop(0,'hsl('+angle+', 10%, 100%)'); gradient.addColorStop(1,'hsl('+angle+', 100%, 50%)'); context.fillStyle = gradient; context.fill(); } 
 <body> <canvas id="picker"></canvas> </body> 

类似的方法,只是为了颜色

 var canvas = document.getElementById("picker"); var context = canvas.getContext("2d"); var x = canvas.width / 2; var y = canvas.height / 2; var radius = 50; var thickness = 0.6; for(var angle=0; angle<=360; angle+=1){ var startAngle = (angle-2)*Math.PI/180; var endAngle = angle * Math.PI/180; context.beginPath(); context.arc(x, y, (1-thickness/2)*radius, startAngle, endAngle, false); context.lineWidth = thickness*radius; context.strokeStyle = 'hsl('+angle+', 100%, 50%)'; context.stroke(); } 
 <body> <canvas id="picker"></canvas> </body> 

编辑:完整项目: https//github.com/dersimn/jquery-colorwheel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM