1
resposta

o meu ficou estranho

<!-- esquadro.html -->

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

<script>

function desenhaEsquadro(xa, ya, xc, yc, cor) {
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle=cor;
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(50, 400);
    pincel.lineTo(xc, yc);
    pincel.fill();

    pincel.fillStyle=cor;
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(100, 350);
    pincel.lineTo(xc, yc);
    pincel.fill();



}

desenhaEsquadro(50, 50, 400, 400, 'black');
desenhaEsquadro(100, 175, 275, 350, 'white');

</script>
1 resposta

Olá Carlos. Isso aconteceu pois você esqueceu de alterar o parametro do "pincel.lineTo" das linhas 14 e 21.

<!-- esquadro.html -->

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

<script>

function desenhaEsquadro(xa, ya, xc, yc, cor) {
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle=cor;
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(xa, yc);
    pincel.lineTo(xc, yc);
    pincel.fill();

}

desenhaEsquadro(50, 50, 400, 400, 'black');
desenhaEsquadro(100, 175, 275, 350, 'white');

</script>

Dessa forma corrige o problema, porém vale lembrar que já que irá usar a função "desenhaEsquadro" duas vezes, uma para a parte Black e outra menor para a parte White, não é necessário repetir duas vezes a parte:

pincel.fillStyle=cor;
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(xa, yc);
    pincel.lineTo(xc, yc);
    pincel.fill();

dentro da função.

E também que há formas de fazer ficar mais dinamico que isto, embora confesso que não consegui fazer de uma forma que funcionasse de diversos tamanhos diferentes.