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/