Boa tarde, pessoal! Tudo certo?
Então, confesso que fiquei meio que no copia e cola nesse exercício. Quando tentei implementar a legenda, percebi que não tinha entendido muito bem e acho que minha função ficou grande, porque tentei colocar um for para usar no array 'textoLegenda( )' e não consegui o resultado que eu queria (que era printar o texto da legenda conforme a respectiva cor do quadrado), então deixei como segue abaixo:
<canvas width="800" height="600"></canvas>
<script>
let tela = document.querySelector('canvas');
let pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(50, 50, 600, 400);
function desenhaRetangulo(eixoX, eixoY, largura, altura, cor) {
let tela = document.querySelector('canvas');
let pincel = tela.getContext('2d');
pincel.fillStyle = cor;
pincel.fillRect(eixoX, eixoY, largura, altura);
pincel.strokeStyle ='black';
pincel.strokeRect(eixoX, eixoY, largura, altura);
}
function desenhaTexto(eixoX, eixoY, texto) {
let tela = document.querySelector('canvas');
let pincel = tela.getContext('2d');
pincel.font = '15px Georgia';
pincel.fillStyle = 'black';
pincel.fillText(texto, eixoX, eixoY);
}
function desenhaBarra(eixoX, eixoY, serie, cores, texto) {
desenhaTexto(eixoX + 30, eixoY - 10, texto);
let somaAltura = 0;
for (let indice = 0; indice < serie.length; indice++){
let altura = serie[indice];
desenhaRetangulo(eixoX, eixoY + somaAltura, 100, altura, cores[indice]);
somaAltura = somaAltura + altura;
}
}
** Nessa função que eu acrecentaria um for para printar o array textoLegenda, acabou que eu chamei a função desenhaTexto 4x**
function desenhaLegenda(eixoX, eixoY, texto) {
desenhaTexto(eixoX + 10, eixoY + 20, texto)
let alturaRetanguloLegenda = 0;
for (let indice = 0; indice < retanguloLegenda.length; indice++) {
let altura = retanguloLegenda[indice];
desenhaRetangulo(eixoX + 20, eixoY + 40 + alturaRetanguloLegenda, 40, altura, cores[indice]);
alturaRetanguloLegenda+=altura;
}
desenhaTexto(eixoX + 70, eixoY + 60, 'Google');
desenhaTexto(eixoX + 70, eixoY + 105, 'Firefox');
desenhaTexto(eixoX + 70, eixoY + 150, 'Safari');
desenhaTexto(eixoX + 70, eixoY + 190, 'Outros');
}
**
// let textoLegenda = ['Google', 'Firefox', 'Safari', 'Outros']
let retanguloLegenda = [40, 40, 40, 40];
let serie2015 = [50, 25, 20, 5];
let serie2016 = [65, 20, 13, 2];
let cores = ['blue', 'green', 'yellow', 'red'];
desenhaLegenda(50, 50, 'LEGENDA:');
desenhaBarra(200, 350, serie2015, cores, '2015');
desenhaBarra(400, 350, serie2016, cores, '2016');
desenhaTexto(10, 480, 'Estudo realizado entre 2015 e 2016 sobre os browsers Chrome, Firefox, Safari e outros.');
</script>
Podem me ajudar para deixar a função que eu criei mais simples? (a desenhaLegenda( ) )