0
respostas

Erro no canvas

Sempre que aperto para desenhar no canvas, fica com uma qualidade horrível e ainda desenha muito longe do cursor do mouse, provavelmente o erro está no código JS mas não sei um jeito de arrumar.

Código HTML

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Inicio | Paitzin</title>
    <link rel="stylesheet" href="CSS/reset.css">
    <link rel="stylesheet" href="CSS/style.css">
</head>
<body>
    <header class="cabecalhoPrincipal">
        <div class="conteiner">
            <h1 class="cabecalhoPrincipal__titulo">
                <a href="#">Paitzin</a>
            </h1>
        </div>
    </header>
    <main class="conteudoPrincipal">
        <div class="container">
            <div class="conteudoPrincipal__Escolha">
                <input type="range" name="tamanho" id="tamanho" min="1" max="100">
                <label for="cor">Escolha uma cor
                <input type="color" name="cor" id="cor">
            </div>
            <div class="conteudoPrincipal__Canvas">
                <canvas class="canvas__main" id="tela"></canvas>
            </div>
        </div>
        <script src="JS/paint.js"></script>
    </main>
    <footer>

    </footer>
</body>
</html>

Código CSS

.cabecalhoPrincipal{
    background-color: rgba(220, 20, 60, 80%);
}

.cabecalhoPrincipal .conteiner{
    display: flex;
    align-items: center;
    justify-content: space-around;
    height: 7rem;
}

.cabecalhoPrincipal__titulo{
    display: flex;
    text-transform: uppercase;
    font-size: 2rem;
    font-weight: bold;
}

.cabecalhoPrincipal__titulo a{
    text-decoration: none;
    color: rgba(0, 0, 0, 80%);
    box-shadow: 2px 2px 2px 2px #000000;
}

.conteudoPrincipal .container{
    display: flex;
    align-items: center;
}

.conteudoPrincipal__Escolha{
    display: flex;
    width: 15%;
    height: 100vh;
    flex-wrap: wrap;
    justify-content: space-around;
    background-color: rgba(0, 0, 0, 0.322);
    border: 2px solid #00FFFF;
}

.conteudoPrincipal__Canvas{
    display: flex;
    width: 85%;
    border: 2px solid #000000;
}

.canvas__main{
    width: 100%;
    height: 100vh;
}

Código JS

var tela = document.getElementById("tela");
paleta = document.getElementById("cor");
tamanho = document.getElementById("tamanho");
var pincel = tela.getContext("2d");

pincel.fillStyle = "gray";
pincel.fillRect(0, 0, 300, 150);


var desenha = false;

tela.onmousemove = function(evento)
{
    var x = evento.pageX - tela.offsetLeft;
    var y = evento.pageY - tela.offsetTop;

    if(desenha)
    {
        pincel.fillStyle = paleta.value;
        pincel.beginPath();
        pincel.arc(x, y, tamanho.value, 0, 2 * 3,14);
        pincel.fill();
    }
    console.log(x + ',' + y);
}

tela.onmousedown = function()
{
    desenha = true;
}

tela.onmouseup = function()
{
    desenha = false;
}