createRadialGradient и прозрачность

Я играю с 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?

1 ответ

Решение

Ну, так как вы спросили:

Я не знаю много об использовании <canvas> с JavaScript, но я знаю о CSS3-градиентах, и обычный способ работы с прозрачностью заключается в использовании rgba цвета.

Чтобы сделать градиент "исчезающим" прозрачным, вы можете добавить прозрачную версию того же цвета.

That's what I did here: http://jsfiddle.net/thirtydot/BD3xA/

Другие вопросы по тегам