MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Crearea unui gradient

Elementul Canvas permite utilizarea gradientului ca fundal. Pentru acest lucru se folosește obiectul CanvasGradient, care poate fi creat fie cu ajutorul metodei createLinearGradient() (gradient liniar), fie cu ajutorul metodei createRadialGradient() (gradient radial).

Gradient liniar

Gradientul liniar se creează prin metoda createLinearGradient(x0, y0, x1, y1), unde x0 și y0 sunt coordonatele punctului de început al gradientului relativ la colțul superior stâng al canvasului, iar x1 și y1 sunt coordonatele punctului final al gradientului. De exemplu:

const gradient = context.createLinearGradient(50, 30, 150, 150);

De asemenea, pentru crearea gradientului este necesar să se definească punctele de referință, care determină culoarea. Pentru acest lucru, la obiectul CanvasGradient se aplică metoda addColorStop(offset, color), unde offset este deplasarea punctului de gradient, iar color este culoarea acestuia. De exemplu:

gradient.addColorStop(0, "blue");

Deplasarea reprezintă o valoare în intervalul de la 0 la 1. Deplasarea 0 reprezintă începutul gradientului, iar 1 - sfârșitul acestuia. Culoarea este specificată fie ca un șir de caractere, fie ca o valoare hexazecimală, fie ca o valoare rgb/rgba.

Aplicăm gradientul:


<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
</head>
<body>
<canvas id="canvas" width="400" height="250"></canvas>
<script>
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
const gradient = context.createLinearGradient(50, 30, 150, 150);
gradient.addColorStop(0, "blue");       // de la culoarea albastră
gradient.addColorStop(1, "white");      // la culoarea albă
context.fillStyle = gradient;           // setăm gradientul ca stil de umplere
context.fillRect(50, 30, 150, 150);
context.strokeRect(50, 30, 150, 150);
</script>
</body>
</html>

Aici, pentru crearea gradientului, au fost adăugate două puncte de referință - pentru culoarea albastră și albă. În final, obținem o tranziție de la culoarea albastră la cea albă:

Este de menționat că pot fi mai multe puncte de referință pentru crearea unui gradient:

gradient.addColorStop(0, "blue");       // de la culoarea albă
gradient.addColorStop(0.5, "green");    // la culoarea verde
gradient.addColorStop(1, "white");      // la culoarea albastră

În exemplul de mai sus obținem un gradient liniar diagonal. Controlând coordonatele, putem obține un gradient orizontal sau vertical.

Coincidența coordonatelor x ale punctului de început și de sfârșit creează un gradient vertical:

const gradient = context.createLinearGradient(50, 30, 50, 150);

Și coincidența coordonatelor y ale punctului de început și de sfârșit creează un gradient orizontal:

const gradient = context.createLinearGradient(50, 30, 150, 30);

Gradient radial

Gradientul radial se creează cu ajutorul metodei createRadialGradient(x0, y0, r0, x1, y1, r1), care acceptă următoarele parametri:

  • x0 și y0: coordonatele centrului primei cercuri
  • r0: raza primei cercuri
  • x1 și y1: coordonatele centrului celei de-a doua cercuri
  • r1: raza celei de-a doua cercuri

De exemplu:

const gradient = context.createRadialGradient(120,100,100,120,100,30);

Și, de asemenea, pentru gradientul radial trebuie să definim punctele de referință de culoare folosind metoda addColorStop()

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
const gradient = context.createRadialGradient(120,100,100,120,100,30);
gradient.addColorStop(0, "blue");
gradient.addColorStop(1, "white");
context.fillStyle = gradient;
context.fillRect(50, 30, 150, 150);
context.strokeRect(50, 30, 150, 150);
← Lecția anterioară Lecția următoare →