1
resposta

Não consegui entender exatamente esse código

Por favor poderiam me explicar esse código, mais expecificamente a parte da função "desenhaBarra"

<canvas width="600" height="400"></canvas>

<script>

    function desenhaRetangulo(x, y, largura, altura, cor) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle=cor;
        pincel.fillRect(x,y, largura, altura);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, largura, altura);
    }

    function desenhaTexto(x , y, texto) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.font='15px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }

    function desenhaBarra(x, y, serie, cores, texto) {

        desenhaTexto(x, y - 10, texto);

        var somaAltura = 0;
        for (var i = 0; i < serie.length; i++) {
            var altura = serie[i];
            desenhaRetangulo(x, y + somaAltura, 50, altura, cores[i]);
            somaAltura = somaAltura + altura;
        }
    }

    var cores = ['blue','green','yellow', 'red'];
    var serie2015 = [50,25,20,5];
    var serie2016 = [65,20,13,2];

    desenhaBarra(50, 50, serie2015, cores, '2015');
    desenhaBarra(150, 50, serie2016, cores, '2016');

</script>
1 resposta

Olá Matheus,

O método desenha Barra recebe como parâmetro as posições x e y. Recebe os arrays de dados do ano e das cores. Adicionalmente recebe um texto que servirá de legenda para o gráfico.

Começa desenhando o texto com 10pixels de altura acima das barras. É criada uma variável de altura, que servirá para iniciar a desenhar as barras em altura (y) variáveis que dependerá do valor dos dados vindo do array série de dados. O y(inicial) é 50. Se o primeiro dado do array é 50, então o primeiro retângulo é printado em (50, 50, 50, 50) x = 50 y = 50 largura = 50 altura = 50

y + altura = 50 + 50 = 100 O segundo dado da série tem valor 25 então quadrado é printado nos dados (50, 100, 50, 25)

agora o y = 100 y + altura é 100 + 25 O terceiro dado da série tem o valor de 20, então o terceiro quadrado é printado nos dados (50, 125, 50, 20)

agora o y = 125 + 20 => 145 O quarto dado da série tem o valor de 5, então o quarto quadrado é printado nos dados (50, 145, 50, 5)

Veja que a altura do quadrado anterior é somado à sua posição y, e isso será a posição y do próximo quadrado.

Espero ter ajudado.