Gradiente radial
El gradiente radial ( o circular ) se puede utilizar como relleno para formas geométricas, líneas y texto dentro del <canvas>
.
JavaScript | Descripción | Defecto | |
---|---|---|---|
createRadialGradient() | context.createRadialGradient(x0,y0,r0,x1,y1,r1); | Crea un gradiente radial para utilizar en el <canvas> x e y son las coordenadas del centro de los circulosr es el radio de los circulos.
|
|
addColorStop() | gradient.addColorStop(stop,color); | Especifica los colores y la posición donde para el gradiente. | |
fillStyle | context.fillStyle = color | gradiente | patrón; | Determina o devuelve el color, gradiente o patrón del relleno. | negro |
fill() | context.fill(); | Rellena una forma geométrica. | black |
Vea la chuleta con las propiedades y metodos() de canvas.
Para definir los gradientes radiales con el método createRadialGradient()
utilizamos dos círculos imaginarios.
El gradiente radial parte desde la circunferencia del primer circulo, y se va hacia la circunferencia del segundo.
El método createRadialGradient(x0,y0,r0,x1,y1,r1)
toma seis argumentos.
Los tres primeros definen el primer circulo imaginario, x0
e y0
siendo las coordenadas del centro, mientras que r0
representa el
radio del circulo.
Los siguientes tres argumentos definen, de la misma manera, el segundo circulo.
El método addColorStop(stop,color)
toma dos argumentos.
El primer argumento, stop
, puede tomar valores desde 0.0
hasta 1.0
, y representa una
posición a lo largo del vector gradiente definido anteriormente con método createLinearGradient()
.
Podemos utilizar el método addColorStop()
tantas veces como creamos necesario.
El segundo argumento representa el color, que puede tomar cualquier valor aceptado en el CSS
( nombres de colores,
valores hex, rgb, rgba,
hsl, hsla).
Veamos un ejemplo. A continuación dibujamos un rectángulo que cubre todo el lienzo,
desde la esquina izquierda arriba ( x = 0, y = 0
) hasta la esquina derecha abajo ( x = canvas.width, y = canvas.height
).
Utilizando el método createRadialGradient()
creamos un gadiente radial, que utilizamos luego para rellenar este rectángulo.
var canvas = document.getElementById("lienzo");
if (canvas && canvas.getContext) {
var ctx = canvas.getContext("2d");
if (ctx) {
ctx.rect(0,0,canvas.width,canvas.height);
var grd = ctx.createRadialGradient(80, 125, 25, 125, 125, 120);// x0, y0, r0, x1, y1, r1
grd.addColorStop(0, "#8df");
grd.addColorStop(1, "#04b");
ctx.fillStyle = grd;
ctx.fill();
}
}
Un ejemplo útil
Podemos escribir una función que crea un gradiente radial, y utilizar esta función y utilizar esta función para crear varias pelotas de distinto tamaño.
function Grd(x, y, r) { grd = ctx.createRadialGradient(x, y, 0, x, y, r); grd.addColorStop(0, 'hsla(0,10%,65%,0)'); grd.addColorStop(1, 'hsla(0,10%,25%,1)'); return grd; }
See the Pen radial gradient by Gabi (@enxaneta) on CodePen.