Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aula 2 - Atividade 7 - Solução com legendas

Eae pessoal!

Resolvi tentar fazer uma solução que tivesse as legendas geradas junto com as barras, e deu certo. Então passei pra deixar a solução aqui pra galera.

Eu fiz mais 3 variáveis e mais 2 incrementos na função desenhaBarra. E o título com a função desenhaTexto.

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

<script>

    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    pincel.fillStyle = "white";
    pincel.fillRect(0, 0, 600, 400);

    function desenhaTexto(x, y, texto) {

        pincel.font = "20px Georgia";
        pincel.fillStyle = "black";
        pincel.fillText(texto, x, y - 5);
    }

    function desenhaRetangulo(x, y,largura, altura, cor) {

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

    function desenhaBarra(x, y, serie, ano) {

        desenhaTexto(x, y, ano);

        var posicao = 0;

        var textoLegenda = 30
        var corLegenda = 10
        /*os incrementos são os mesmos, mas prescisei fazer 2 variáveis
        para que o texto e o quadradinho não fiquem sobrepostos*/

        while(posicao < serie.length){

            desenhaRetangulo(x, y, 40, serie[posicao], cores[posicao]);
            desenhaTexto(textoLegenda, 230, navegador[posicao]);
            desenhaRetangulo(corLegenda, 213, 10, 10, cores[posicao]);

            textoLegenda = textoLegenda + 140; //espaçamento entre os textos da legenda
            corLegenda = corLegenda + 140; //espaçamento entre os quadradinhos da legenda
            y = y + serie[posicao]; //soma y (posição atual) ao tamanho do retângulo desenhado
            posicao++;
        }
    }

    var navegador = ["Chrome", "Firefox", "Safari", "Outros "]; 
    var cores = ["blue", "green", "yellow", "red"];
    var serie2015 = [50, 25, 20, 5];
    var serie2016 = [65, 20, 13, 2];

    desenhaTexto(40, 30, "Navegadores mais utilizados pelos alunos da Alura");

    desenhaBarra(200, 70, serie2015, "2015");
    desenhaBarra(285, 70, serie2016, "2016");

</script>

Se não der pra entender alguma coisa do código pergunta aí que eu tento responder. E sugestões serão muito bem-vindas.

Até mais!

1 resposta
solução!

Ficou muito bom Anderson esse exercício não é muito simples de fazer, que bom que você além de conseguir ainda fez melhorias isso vai potencializar ainda mais seu aprendizado.Excelente!

Pra não deixar de deixar nenhuma sugestão deixo essa:

    function desenhaBarra(x, y, serie, ano) {

        desenhaTexto(x, y, ano);

        var posicao = 0;

        var textoLegenda = 30
        var corLegenda = 10
        /*os incrementos são os mesmos, mas prescisei fazer 2 variáveis
        para que o texto e o quadradinho não fiquem sobrepostos*/
        desenhaTexto(15, 200, "Legenda:");
        while(posicao < serie.length){

            desenhaRetangulo(x, y, 40, serie[posicao], cores[posicao]);
            desenhaTexto(textoLegenda+90, 200, navegadores[posicao]);
            desenhaRetangulo(corLegenda+95, 185, 10, 10, cores[posicao]);

            textoLegenda = textoLegenda + 140; //espaçamento entre os textos da legenda
            corLegenda = corLegenda + 140; //espaçamento entre os quadradinhos da legenda
            y = y + serie[posicao]; //soma y (posição atual) ao tamanho do retângulo desenhado
            posicao++;
        }
    }

    var navegadores = ["Chrome", "Firefox", "Safari", "Outros "]; 

Mas é só uma simples sugestão,parabéns e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software