Aplicar sombras
Las sombras pueden ser aplicadas a todos los trazados que dibujamos en el <canvas>
.
Hay cuatro propiedades que determinan las características de las sombras: shadowColor
( el color ), shadowBlur
( el desenfoque ),
shadowOffsetX
( el desplazamiento horizontal ) y shadowOffsetY
( el desplazamiento vertical ).
Las propiedades shadowOffsetX
y shadowOffsetY
pueden tomar valores tanto positivas ( la sombra cae hacia la derecha y abajo ) como negativas ( hacia la izquierda y arriba ).
JavaScript | Descripción | Defecto | |
---|---|---|---|
shadowColor | context.shadowColor=color; | Determina (sets) o devuelve (returns) el color utilizado para las sombras. | #000000; transparente |
shadowBlur | context.shadowBlur=number; | Determina (sets) o devuelve (returns) el nivel de desenfoque de las sombras. | 0 |
shadowOffsetX | context.shadowOffsetX=number; | Determina (sets) o devuelve (returns) la distancia horizontal entre la sombra y la forma que la genera.
El valor tiene que ser > 0 para que la sombra tenga efecto. |
0 |
shadowOffsetY | context.shadowOffsetY=number; | Determina (sets) o devuelve (returns) la distancia horizontal entre la sombra y la forma que la genera.
El valor tiene que ser > 0 para que la sombra tenga efecto. |
0 |
Vea la chuleta con las propiedades y metodos() de canvas.
Veamos un ejemplo. A continuación aplicamos una sombra tanto a un rectángulo como a un texto.
Para esto establecemos primero el desenfoque:
ctx.shadowBlur=5;
el desplazamiento ( offset ) en x e y:
ctx.shadowOffsetX=2; ctx.shadowOffsetY=2;
y el color de la sombra:
ctx.shadowColor="#333";
La sombra definida será aplicada a todos los trazados que dibujamos a continuación. Para que esto no pase podemos utilizar los métodos save() y restore().
Antes de definir la sombra guardamos el contexto con save()
.
ctx.save();
A continuaciĆ³n van los trazados con sombra ( el cuadrado y el texto ).
Antes de dibujar el texto sin sombra restablecemos los valores iniciales del contexto con restore()
.
ctx.restore();
var canvas = document.getElementById("lienzo");
if (canvas && canvas.getContext) {
var ctx = canvas.getContext("2d");
if (ctx) {
ctx.save()
ctx.shadowBlur=5;
ctx.shadowOffsetX=2;
ctx.shadowOffsetY=2;
ctx.shadowColor="#333";
// rectangulo
ctx.fillStyle="white";
ctx.beginPath();
ctx.fillRect(20,20,100,80);
// texto
ctx.font = "18px Verdana";
ctx.textAlign = "center";
ctx.fillText("Los gozos y las sombras", canvas.width/2, 150);
ctx.restore()
// texto 2
ctx.font = "20px Verdana";
ctx.textAlign = "left";
ctx.fillStyle="blue";
ctx.fillText("texto sin sombra", 18, 200);
}
}
Lea más acerca de cómo escribir en el canvas