MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Setări de desen

Contextul elementului canvas - obiectul CanvasRenderingContext2D oferă o serie de proprietăți prin care se poate configura desenul pe canvas. Printre aceste proprietăți se numără următoarele:

  • strokeStyle: stabilește culoarea liniilor sau a conturului. Implicit este setată culoarea neagră
  • fillStyle: stabilește culoarea de umplere a formelor. Implicit este setată culoarea neagră
  • lineWidth: stabilește grosimea liniilor. Implicit este 1.0
  • lineJoin: stabilește stilul de îmbinare a liniilor
  • globalAlpha: stabilește transparența desenului pe canvas
  • setLineDash: creează o linie din segmente scurte

În tema anterioară, când am desenat dreptunghiuri, nu am setat explicit nicio culoare, astfel că pentru culoarea liniilor și umplerea dreptunghiurilor s-a folosit culoarea implicită - negru. Acum vom folosi alte culori. Culoarea poate fi definită în diferite formate:

  • Ca nume de culoare, de exemplu, "red" sau "green"
  • Ca valoare hexazecimală a culorii, de exemplu, "#00FFFF"
  • Ca valoare în format rgb, de exemplu, "rgb(0, 0, 255)"
  • Ca valoare în format rgba, de exemplu, "rgba(0, 0, 255, 0.5)"

De exemplu, vom seta culoarea conturului sau a granițelor formelor folosind proprietatea strokeStyle:

<!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");
context.strokeStyle = "#ff0000";     // setăm culoarea conturului formei
context.strokeRect(10, 10, 100, 100);
</script>
</body>
</html>

În acest caz, culoarea conturului setată este roșu sau "#ff0000":

Vom seta culoarea de umplere folosind proprietatea fillStyle:

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.fillStyle = "#ee5253";     // setăm culoarea de umplere a formei
context.fillRect(10, 10, 100, 100);

Desigur, putem combina mai multe metode:

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");

context.fillStyle = "#c7ecee";     // setăm culoarea de umplere a formei
context.fillRect(10, 10, 100, 100);
context.strokeStyle = "#22a6b3";     // setăm culoarea conturului formei
context.strokeRect(10, 10, 100, 100);

context.fillRect(120, 10, 100, 100);       // dreptunghi fără graniță
context.strokeRect(230, 10, 100, 100);     // dreptunghi fără umplere

Grosimea liniilor

Proprietatea lineWidth permite să setezi grosimea liniei:

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");

context.fillStyle = "#c7ecee";     // setăm culoarea de umplere a formei
context.fillRect(10, 10, 100, 100);
context.strokeStyle = "#22a6b3";     // setăm culoarea conturului formei
context.lineWidth = 4.5;             // setăm grosimea liniei
context.strokeRect(10, 10, 100, 100);

setLineDash

Metoda setLineDash() acceptă ca parametru un array de numere, care stabilesc distanțele între linii. De exemplu:

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");

context.strokeStyle = "red";
context.setLineDash([15,5]);
context.strokeRect(10, 10, 100, 100);
             
context.strokeStyle = "blue";
context.setLineDash([2,5,6]);
context.strokeRect(130, 10, 100, 100);
             
context.strokeStyle = "green";
context.setLineDash([2]);
context.strokeRect(250, 10, 100, 100);

Tipul de îmbinare a liniilor

Proprietatea lineJoin se referă la tipul de îmbinare a liniilor într-o formă. Poate lua următoarele valori:

  • miter: îmbinări drepte care formează unghiuri drepte. Aceasta este valoarea implicită
  • round: îmbinări rotunjite
  • bevel: îmbinări în formă de pânză
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");

context.strokeStyle = "red";

context.lineWidth = 10;
context.lineJoin = "miter";
context.strokeRect(10, 10, 100, 100);
context.lineJoin = "bevel";
context.strokeRect(130, 10, 100, 100);
context.lineJoin = "round";
context.strokeRect(250, 10, 100, 100);

Transparența

Proprietatea globalAlpha stabilește transparența desenului. Poate accepta ca valoare un număr de la 0 (complet transparent) la 1.0 (opac):

const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
                 
context.fillStyle = "blue";
context.fillRect(50, 50, 100, 100);
           
context.globalAlpha = 0.5;
context.fillStyle = "red";
context.fillRect(100, 100, 100, 100);

Aici pe canvas sunt afișate două dreptunghiuri: unul albastru și unul roșu. Dar înainte de a afișa dreptunghiul roșu, este setată transparența desenului, astfel încât prin dreptunghiul roșu putem vedea și pe cel albastru.

← Lecția anterioară Lecția următoare →