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

BeginPath obrigatório para arc?

Sempre que é invocado o comando arc, nos exemplos é utilizado o comando c.beginPath, porém estou realizando sem a função e obtendo o mesmo resultado.

2 respostas
solução!

Eu verifiquei que quando utilizada a função arc sem o beginPath, de alguma forma o brush entende que deve ligar os pontos... Desta forma, se você utilizar diversos arc vai formar uma forma geométrica de acordo com as posições de cada elemento.

No meu caso, seu eu utilizar beginPath na função arc, ele pega a cor de fundo do quadrado verde. Agora retirando essa função funciona.

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

<script>

    function desenhaQuadradoVerde(x, y) {
        var tela = document.getElementById("tela");
        var c = tela.getContext("2d");

        c.fillStyle = "green";
        c.fillRect(x, y, 50, 50);
        c.fill();

        c.strokeStyle = "black";
        c.strokeRect(x, y, 50, 50);
    }

    function desenhaQuadradoVermelho(x, y) {
        var tela = document.getElementById("tela");
        var c = tela.getContext("2d");

        c.fillStyle = "red";
        c.fillRect(x, y, 50, 50);
        c.fill();

        c.strokeStyle = "black";
        c.strokeRect(x, y, 50, 50);
    }

    function desenhaBolaAzuis(x, y) {
        var tela = document.getElementById("tela");
        var c = tela.getContext("2d");

        c.fillStyle = "blue";
        c.arc(x, y, 25, 0, 2 * Math.PI);
        c.fill();
    }

    for(var x = 0; x < 600; x = x + 50) {        
        desenhaQuadradoVermelho(x, 0);
        desenhaQuadradoVerde(x, 50);
        desenhaBolaAzuis(x, 100);
    }    

</script>