Я играю с createRadialGradient()
на холсте HTML5. Это работает как шарм, за исключением случаев, когда я пытаюсь реализовать (полу) прозрачность.
Я сделал это jsFiddle, чтобы все было понятно: http://jsfiddle.net/rfLf6/1/.
function circle(x, y, r, c) {
ctx.beginPath();
var rad = ctx.createRadialGradient(x, y, 1, x, y, r);
rad.addColorStop(0, c);
rad.addColorStop(1, 'transparent');
ctx.fillStyle = rad;
ctx.arc(x, y, r, 0, Math.PI*2, false);
ctx.fill();
}
ctx.fillRect(0, 0, 256, 256);
circle(128, 128, 200, 'red');
circle(64, 64, 30, 'green');
То, что происходит, - это круг (радиальный градиент), окрашенный в (x, y)
с радиусом r
, а цветовые остановки - r
и 'transparent'
. Однако зеленый круг меняется с зеленого на черный , в то время как он должен переходить в прозрачный, т. Е. Соответствующие красные цвета фонового круга.
Как реализовать прозрачные радиальные градиенты на холсте HTML5?