Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Meus desenhos estão com proporções diferentes

Edit: eu descobri o motivo do erro, mas como não sei como excluir o post, eu vou editar ele

O meu erro foi editar a altura e o comprimento no arquivo CSS, usando a tag Canvas, e não fazendo isso direto na tag canvas do HTML. Isso causou a distorção nas proporções da imagem

Bom dia a todos Eu fui fazer o desenho da aula, e percebi que as proporções estavam diferentes (eu coloquei o width: 600px e o height: 400px;, mas para desenhar certo, no arquivo do JavaScript ele tinha que ter o tamanho de 300x150) Ex da bandeira da Itália para dar certo

Arquivo CSS (o que eu fiz errado

canvas {
    margin: 0 20px 20px 0;
    width: 600px;
    height: 400px;
}

Arquivo HTML ( o que eu fiz errado)

    <canvas class="desenho"></canvas>
    <canvas class="desenho2"></canvas>
    <canvas class="desenho3"></canvas>

correção do arquivo CSS

canvas {
    margin: 0 20px 20px 0;
}

Correção do arquivo HTML

    <canvas width="600" height="400" class="desenho"></canvas>
    <canvas width="600" height="400" class="desenho2"></canvas>
    <canvas width="600" height="400" class="desenho3"></canvas>

Imagens de badeiras distorcidas devido ao reset.css

Imagem com correção na proporçãoCódigo completo do index.html (código antigo como referencia)

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width">
    <link rel="stylesheet" href="CSS/reset.css">
    <link rel="stylesheet" href="CSS/style.css">
    <title>Desenho no JavaScript </title>
</head>
<body>
    <h1>Desenho no JavaScript </h1>
    <canvas class="desenho"></canvas>
    <canvas class="desenho2"></canvas>
    <canvas class="desenho3"></canvas>
    <script src="JavaScript/desenhos.js"></script>    
</body>
</html>

Arquivo desenhos.js (código antigo como referencia)

var tela = document.querySelector('.desenho');
var pincel = tela.getContext("2d");
pincel.fillStyle = '#008000'
pincel.fillRect(0,0,100,150)
pincel.fillStyle = '#FFFFFF'
pincel.fillRect(100,0,200,150)
pincel.fillStyle = '#FF0000'
pincel.fillRect(200,0,300,150)

var tela2 = document.querySelector('.desenho2');
var pincel2 = tela2.getContext("2d");
pincel2.fillStyle = '#FFFFFF'
pincel2.fillRect(0,0,300,75)
pincel2.fillStyle = '#FF0000'
pincel2.fillRect(0,75,300,150)

var tela3 = document.querySelector('.desenho3');
var pincel3 = tela3.getContext("2d");
pincel3.fillStyle = '#008000'
pincel3.fillRect(0,0,300,150)
pincel3.fillStyle = '#FFFF00'
pincel3.beginPath();
pincel3.moveTo(5,75);
pincel3.lineTo(150,5);
pincel3.lineTo(295,75);
pincel3.lineTo(150,145);
pincel3.lineTo(5,75);
pincel3.fill();

pincel3.fillStyle = '#00008B'
pincel3.beginPath();
pincel3.arc(150,75,50,0,2*3.14);
pincel3.fill();

style.css (código antigo como referencia)

html { background-color: #DCDCDC;}
body {
    margin: 0 auto;
    margin-top: 30px; 
    font-family: Arial, Helvetica, sans-serif;
    text-align: center;
}
body > h1 {font-size: 2rem;
    text-align: center;
    font-weight: bolder;
    margin-bottom: 2rem;
}

canvas {
    margin: 0 20px 20px 0;
    width: 600px;
    height: 400px;
}
2 respostas
solução!

Olá Murilo, tudo ok por aí?

Gostaria de agradecer pela paciência em obter um retorno!

  1. Seu código está muito bom, pois apresenta boa estrutura e indentação correta. Parabéns! Isso é super importante para que a leitura seja de fácil entendimento. Continue praticando e aplicando seus conhecimentos.

  2. Assim como você percebeu e mencionou o tamanho do Canvas realmente estava gerando problema, portanto somente para complementar o que você já percebeu, nesse curso não só a posição dos atores é trabalhada os seus usos, funções, movimentações, etc. Porém um ponto que ele também trás é o uso flexível do Canvas para o beneficio do usuário.

  3. Outro ponto que não é obrigatório, mas é interessante de mencionar é o uso do ponto e vírgula no final das linha de código, isso não é obrigatório, mas é algo muito importante para ajudar a pessoa que vai ler o seu código, bem como o próprio navegador, essa prática é super valida para tornar seu projeto mais simples e corrido;

  4. Recomendo, caso se sinta confortável em compartilhar seu conhecimento, interagir com outros estudantes, trocar experiências e fazer networking, que participe do Discord oficial da Alura de alunas e alunos:

  5. Convite do discord

  6. Alura+: Como usar o discord

Caso tenha dúvidas, estarei à disposição para te ajudar!

Um grande abraço e bons estudos!

Bom dia, Murilo. Tudo bom? Muito bacana o seu código. Na questão da estilização é o seguinte: salvo engano, há três maneiras para aplicar a estilização a um documento HTML. Cada uma dessas maneiras tem pesos diferentes quanto a ordem que serão aplicada: podemos ter estilização diretamente no elemento, como na aula (na tag canvas), dentro da tag style, ou dentro de um arquivo externo .css; e cada uma delas tem um peso diferente. Por exemplo, na matemática, os operadores aritméticos multiplicar e dividir tem precedência maior sobre os operadores somar e subtrair. Na programação web essa lógica segue com bastante frequência. No caso de estilização diretamente no elemento, ela será a que terá maior ordem de precedência sobre as outras duas, por isso que geralmente escolher um padrão para nossa estilização é sempre recomedável .

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