建设一个色轮HTML5

问题描述 投票:4回答:3

我只是学习有关HTML5画布的一些细节,并在进步,我想建立由楔子简单色轮(建在一个时间上的1度的楔形,并添加它到360度)。但是,我得到的梯度一些奇怪的标记图如下图所示:

.

下面是所产生的色轮的小提琴:qazxsw POI

特别是,这是JS代码:

http://jsfiddle.net/53JBM/

如果任何人都可以指出什么我做错了,或者有更好的方法来完成,我试图做到这一点,将不胜感激:)

javascript html5 html5-canvas
3个回答
8
投票

这是否足以给你,请检查

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();
}

5
投票

试试这个它看起来很棒。顺便感谢,这正是我试图让。

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();
}

0
投票

类似的方法,只是颜色

<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>

© www.soinside.com 2019 - 2024. All rights reserved.