como fazria pra apagar o que desenhei sem ter que recarregar a pagina?
como fazria pra apagar o que desenhei sem ter que recarregar a pagina?
Olá, Thais. Acho que você verá isso melhor mais pra frente, mas vou mostrar aqui como ficaria adicionar um botão para limpar a tela.
Primeiro você teria q colocar o botão na tela:
<input class="botao" type="button" value="Limpar">
Depois declarar uma variável que será referência para esse botão, a partir da classe que definimos no botão. E já podemos atribuir qual função será executada em seguida:
const button = document.querySelector('.botao');
button.addEventListener('click', limpar);
E por fim a função para limpar (apenas vai repintar de cinza):
function limpar() {
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
}
O código completo ficaria assim:
<canvas width="600" height="400"></canvas>
selecione a cor <input type="color">
<input class="botao" type="button" value="Limpar">
<script>
var paleta = document.querySelector('input');
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
const button = document.querySelector('.botao');
button.addEventListener('click', limpar);
function limpar() {
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
}
var desenha = false;
function desenhaCirculo(evento) {
if(desenha) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
pincel.fillStyle = paleta.value;
pincel.beginPath();
pincel.arc(x, y, 10, 0, 2 * 3.14);
pincel.fill();
}
console.log(x + ',' + y);
}
tela.onmousemove = desenhaCirculo;
tela.onmousedown = function() {
desenha = true;
}
tela.onmouseup = function() {
desenha = false;
}
</script>
Olá, Thais! Tudo bem contigo?
Poderíamos criar uma função para limparmos a tela
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);
}
Após o console.log
, acrescentei um if
com uma condição de evento para quando eu apertar a tecla SHIFT
if (event.shiftKey) {
assim eu chamo minha função para limpar a tela após apertar a tecla
limpaTela();
Porém se eu deixar assim o meu canvas com o fundo cinza desaparece. para evitar isso, coloco novamente após limpar
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
}
Toda essa parte ficará assim
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);
}
// atribuindo diretamente a função anônima
tela.onmousemove = function (evento) {
if (desenha) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
pincel.fillStyle = 'blue';
pincel.beginPath();
pincel.arc(x, y, 10, 0, 2 * 3.14);
pincel.fill();
}
console.log(x + ',' + y);
if (event.shiftKey) {
limpaTela();
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
}
}
É isso aí ;-)
Um abraço e bons estudos, Thais!
Qualquer dúvida, estamos aqui!!!