SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Introdução ao
HTML5 Canvas
Compilação feita com base nas referências por:
Prof. José Cintra
http://www.josecintra.com/blog
Download dos exemplos disponíveis no GitHub
Apresentação
O objetivo deste minicurso é fornecer conceitos básicos sobre o
elemento CANVAS do HTML5, destinado a delimitar uma área para
renderização dinâmica de gráficos e animações.
2
Introdução
<canvas> é um elemento HTML que pode ser usado para desenhar
gráficos, exibir imagens, realizar animações, jogos, etc.
Isso pode ser feito diretamente no browser, sem a necessidade de
plug-ins, sendo que, todo o trabalho de criação e animação, é
realizado através de linguagens de programação (normalmente
Javascript).
O elemento foi originalmente introduzido pela Apple para o
navegador Safari mas, atualmente, a maioria dos browsers modernos
oferecem suporte.
3
O canvas é como um “quadro branco” onde vamos fazer nossos
desenhos. Para defini-lo, crie um arquivo HTML através de qualquer
editor de texto e digite o seguinte conteúdo:
Nesse exemplo, criamos uma área de 400x400 pixels com borda.
Caso o browser não tenha suporte para o canvas, será exibida a
mensagem de fallback.
Conceitos Iniciais
4
<html>
<body>
<canvas id=‘canvas’ width=‘400" height=’400’ style="border:1px solid;">
Seu navegador não suporta Canvas do HTML5.
</canvas>
</body>
</html>
2
A programação do canvas pode ser feita com a linguagem Javascript.
Para isso, precisamos definir (obter) um objeto gráfico que vai
representar a área de desenho e outro objeto para fazer o papel do
pincel.
Dessa forma:
Conceitos Iniciais
5
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
</script>
A área de desenho é medida em pixels e assemelha-se ao plano
cartesiano, com a diferença de que não existem coordenadas
negativas.
Conceitos Iniciais
6
A cor do pincel (preto por padrão) pode ser definida através de
quatro formas:
 Cores predefinidas (blue, green,etc.)
 Um valor hexadecimal como #FF0000 ou #555
 Um valor RGB como rgb(255, 0, 0).
 Uma valor RGB com opacidade como rgba(0,0,255,0.3)
Além disso, pode-se definir o que vai ser pintado:
 Cor do contorno (stroke style)
 Cor de preenchimento (fill style)
Veja aqui uma tabela de cores: HTML Color Names
Cores
7
Exemplos de definição de cores
Para maiores detalhes e mais opções para trabalhar com cores, veja
esse tutorial: MDN web docs – Canvas Colors
Cores
8
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
// 4 maneiras de setar a cor de preenchimento para laranja
pincel.fillStyle = 'orange';
pincel.fillStyle = '#FFA500';
pincel.fillStyle = 'rgb(255, 165, 0)';
pincel.fillStyle = 'rgba(255, 165, 0, 1)';
// 4 maneiras de setar a cor de contorno para laranja
pincel.strokeStyle = 'orange';
pincel.strokeStyle = '#FFA500';
pincel.strokeStyle = 'rgb(255, 165, 0)';
pincel.strokeStyle = 'rgba(255, 165, 0, 1)';
</script>
strokeStyle
Um Path (caminho) é uma forma de indicar que você pretende
realizar uma série de desenhos no canvas que vão ser renderizados
todos juntos no final do path e, por isso, são tratados como uma
unidade. Para isso, podemos usar os seguintes métodos:
1. beginPath: Inicia ou limpa um path
2. closePath: Indica o fim do path
3. stroke: Desenha os contornos dos desenhos do path
4. fill: Preenche as figuras criadas no path
Obs: Os dois últimos métodos fazem um closePath implícito.
Paths
9
strokeStyle
Para desenharmos linhas, podemos usar os métodos abaixo:
moveTo(x,y)
Move o pincel para a coordenada (x,y)
lineTo(x,y)
Desenha uma linha iniciando na posição do pincel até o ponto (x,y)
Para maiores detalhes e mais opções para trabalhar com linhas, veja
esse tutorial: HTML5 Canvas Lines
Figuras Básicas - Linhas
10
strokeStyle
Exemplo de desenho de uma linha:
Resultado:
Figuras Básicas - Linhas
11
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
pincel.beginPath();
pincel.moveTo(10,45);
pincel.lineTo(180,45);
pincel.strokeStyle = ‘red’;
pincel.stroke();
</script>
strokeStyle
Para desenhar um retângulo, usamos o método rect:
rect(x,y,width,height);
Onde:
x,y: Coordenada do vértice superior esquerdo
Width: Largura do retângulo
Height:Altura do retângulo
Para maiores detalhes e mais opções para trabalhar com retângulos,
veja esse tutorial: HTML Canvas rect
Figuras Básicas - Retângulos
12
strokeStyle
Exemplo do desenho de um retângulo:
Resultado:
Figuras Básicas - Retângulos
13
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
//Desenho de um retângulo amarelo com borda preta
pincel.beginPath();
pincel.rect(188, 50, 200, 100);
pincel.fillStyle = 'yellow';
pincel.strokeStyle = 'black';
pincel.fill();
pincel.stroke();
</script>
strokeStyle
Para desenhar um círculo, usamos o método arc:
arc(x, y, r, sAngle, eAngle, counterclockwise)
Onde:
x,y: Coordenada do centro do círculo;
r: O Raio do círculo;
sAngle: Ângulo de início da circunferência;
eAngle: Ângulo final da circunferência;
Counterclockwise: Parâmetro opcional indicando se o desenho
será no sentido horário ou não.
Para maiores detalhes e mais opções para trabalhar com círculos,
veja esse tutorial: HTML Canvas arc
Figuras Básicas - Círculos
14
strokeStyle
Exemplo do desenho de um círculo:
Resultado:
Figuras Básicas - Círculos
15
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
//Desenho de um círculo verde com borda preta
pincel.beginPath();
pincel.arc(100,75,50,0,2*Math.PI);
pincel.fillStyle = 'green';
pincel.strokeStyle = '#003300';
pincel.lineWidth = 5;
pincel.fill();
pincel.stroke();
</script>
strokeStyle
As demais formas gráficas devem ser desenhadas a partir das figuras
básicas (linhas, retângulos e círculos)
Veja, por exemplo, o desenho de um triângulo:
Figuras Básicas – Outras figuras
16
strokeStyle
<script>
var canvas = document.getElementById(“canvas”);
var pincel = canvas.getContext(“2d”);
pincel.beginPath();
pincel.moveTo(100, 100); Resultado:
pincel.lineTo(100, 300);
pincel.lineTo(300, 300);
pincel.closePath();
pincel.lineWidth = 4;
pincel.strokeStyle = '#666666';
pincel.fillStyle = "#FFCC00";
pincel.stroke();
pincel.fill();
</script>
Para escrever textos no canvas, usamos as seguintes propriedades e
métodos:
 font – Define as propriedades da fonte usada nos textos
 fillText(text,x,y) – Escreve um texto com preenchimento
 strokeText(text,x,y) – Excreve um texto sem preenchimento
Onde:
x,y: representam as coordenadas onde se deseja escrever o texto.
Obs: Pra centralizar o texto no canvas, use:
canvas.width/2, canvas.height/2
Maiores detalhes: HTML CanvasText
Textos
17
strokeStyle
Exemplo de escrita de textos
Resultado:
Textos
18
strokeStyle
<script>
var pincel = document.getElementById('canvas').getContext('2d');
pincel.font = "30px Arial";
pincel.strokeStyle = 'green';
pincel.fillStyle = 'red';
pincel.fillText("Hello”,10,50);
pincel.strokeText(“World”,10,200);
</script>
var ctx = document.getElementById('canvas').getContext('2d');
Você pode Exibir arquivos de imagens (jpg,png) através do comando
abaixo
drawImage(image, dx, dy)
Onde:
image: é um objeto do tipo image, que representam uma imagem
lida de um arquivo ou de um elemento‘img’ do html
dx,dy: As coordenadas de destino no canvas
Obs:Antes é necessário criar um objeto image.
Maiores detalhes: HTML Canvas Image
Imagens
19
strokeStyle
Exemplo: desenhando a imagem de um arquivo
Resultado:
Imagens
20
strokeStyle
<script>
var pincel = document.getElementById('canvas').getContext('2d');
var img = new Image();
img.onload = function () {
pincel.drawImage(img, 0, 0);
};
img.src = 'html5.png';
</script>
var ctx = document.getElementById('canvas').getContext('2d');
Exemplo 1 – Desenhando uma casa
21
strokeStyle
<script>
var pincel = document.getElementById('canvas').getContext('2d');
pincel.moveTo(100, 25); pincel.lineWidth = 2;
pincel.lineTo(300, 25); pincel.lineTo(325, 100);
pincel.lineTo(150, 100); pincel.closePath();
pincel.fillStyle = "#C81E1E"; pincel.fill();
pincel.moveTo(100, 25); pincel.lineTo(25, 100)
pincel.moveTo(30, 95); pincel.lineTo(30, 200);
pincel.lineTo(150, 200); pincel.stroke();
pincel.moveTo(150, 100); pincel.lineTo(150, 200);
pincel.lineTo(325, 190); pincel.lineTo(325, 100);
pincel.closePath(); pincel.stroke();
pincel.fillStyle = "#91913C"; pincel.fillRect(68, 125, 40, 75);
</script>
var ctx = document.getElementById('canvas').getContext('2d');
Créditos: http://www.authorcode.com/drawing-custom-shapes-in-html5-canvas/
Exemplo 2 – Desenhando o Smiley
22
strokeStyle
<script>
var pincel = document.getElementById('canvas').getContext('2d');
pincel.beginPath();
pincel.arc(75, 75, 50, 0, Math.PI * 2, true); // Rosto
pincel.fillStyle = 'yellow';
pincel.fill();
pincel.moveTo(110, 75);
pincel.arc(75, 75, 35, 0, Math.PI, false); // Boca
pincel.moveTo(65, 65);
pincel.arc(60, 65, 5, 0, Math.PI * 2, true); // olho esquerdo
pincel.moveTo(95, 65);
pincel.arc(90, 65, 5, 0, Math.PI * 2, true); // Olho direito
pincel.stroke();
</script>
var ctx = document.getElementById('canvas').getContext('2d');
Créditos: https://codepen.io/Nir_Dayan/pen/caeAn/
Exemplo 3 – Quadrados Aninhados
23
strokeStyle
<script>
//Usando estruturas de repetição para desenhar os quadrados
var pincel = document.getElementById('canvas').getContext('2d');
for(x = 70; x > 0;x -= 10){
pincel.strokeRect(100-(x/2),100-(x/2),x,x)
}
</script>
var ctx = document.getElementById('canvas').getContext('2d');
Créditos: https://codepen.io/Nir_Dayan/pen/caeAn/
Os exemplos fornecidos devem lhe trazer algumas ideias sobre o
que você pode fazer com o canvas e irá fornecer trechos de código
que podem lhe ajudar na construção do seu próprio conteúdo.
No entanto, não esgotamos o assunto. Existem vários outros
recursos disponibilizados pela API que não cobrimos nesse
minicurso.
Para se aprofundar mais sobre o assunto, consulte a bibliografia a
seguir.
Conclusão
24
strokeStyle
Web
 Mozilla MDN
 W3Schools
 HTML5 CanvasTutorials
Livros
 CANVAS HTML 5 – Composição gráfica e interatividade na web
• Roque Fernando Marcos Sousa • Brasport Editora
 Desenvolva jogos com HTML5 Canvas e JavaScript • Éderson
Cássio • Editora Casa do Código
Referências
25
strokeStyle

Mais conteúdo relacionado

Mais procurados

Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisJorge Ávila Miranda
 
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Aparecida Bezerra
 
Modelo laudo tecnico individual para aposentadoria
Modelo laudo tecnico individual para aposentadoria Modelo laudo tecnico individual para aposentadoria
Modelo laudo tecnico individual para aposentadoria Paulo H Bueno
 
Modelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilModelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilHebert Mayco
 
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdf
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdfMANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdf
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdfNelson245166
 
Microcontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitaisMicrocontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitaisFabio Souza
 
Artigo esmagador de latas automatizado
Artigo   esmagador de latas automatizado Artigo   esmagador de latas automatizado
Artigo esmagador de latas automatizado Victor Quinteiro
 
Modelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilModelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilRosana Roratto
 

Mais procurados (10)

Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionais
 
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
 
Modelo laudo tecnico individual para aposentadoria
Modelo laudo tecnico individual para aposentadoria Modelo laudo tecnico individual para aposentadoria
Modelo laudo tecnico individual para aposentadoria
 
Modelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilModelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civil
 
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdf
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdfMANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdf
MANUAL PLACA DIAGNÓSTICO PC ANALYZER PCI USB.pdf
 
Microcontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitaisMicrocontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitais
 
03 30 planta e corte - da i
03 30 planta e corte - da i03 30 planta e corte - da i
03 30 planta e corte - da i
 
Artigo esmagador de latas automatizado
Artigo   esmagador de latas automatizado Artigo   esmagador de latas automatizado
Artigo esmagador de latas automatizado
 
Modelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civilModelo de laudo_tecnico_de_engenharia_civil
Modelo de laudo_tecnico_de_engenharia_civil
 
Escada
EscadaEscada
Escada
 

Semelhante a Minicurso de HTML5 Canvas -

Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Altair Borges
 
Ferramentas para Animações de Sites - Canvas
Ferramentas para Animações de Sites - CanvasFerramentas para Animações de Sites - Canvas
Ferramentas para Animações de Sites - CanvasIsrael Messias
 
Frontline - Rails3.1
Frontline - Rails3.1Frontline - Rails3.1
Frontline - Rails3.1Daniel Lopes
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdfTRABS30
 
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico ProjetivoRoteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivossuser95aa63
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdftrabs23
 
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdf
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdfRoteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdf
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdftrabalhosacademicos10
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdftrabs27
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdftrabs26
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdfTRABS12
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdftrabs46
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdftrabs40
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdftrabs41
 

Semelhante a Minicurso de HTML5 Canvas - (20)

Canvas element
Canvas elementCanvas element
Canvas element
 
Pew2012
Pew2012Pew2012
Pew2012
 
Border image rounded corners shadow-box
Border image rounded corners shadow-boxBorder image rounded corners shadow-box
Border image rounded corners shadow-box
 
Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3
 
Apostila inkscape
Apostila inkscapeApostila inkscape
Apostila inkscape
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 
Ferramentas para Animações de Sites - Canvas
Ferramentas para Animações de Sites - CanvasFerramentas para Animações de Sites - Canvas
Ferramentas para Animações de Sites - Canvas
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
CSS
CSSCSS
CSS
 
Frontline - Rails3.1
Frontline - Rails3.1Frontline - Rails3.1
Frontline - Rails3.1
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdf
 
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico ProjetivoRoteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdf
 
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdf
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdfRoteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdf
Roteiro de Aulas Práticas da Disciplina de Desenho Técnico Projetivo.pdf
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdf
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdf
 
DESENHO TECNICO.pdf
DESENHO TECNICO.pdfDESENHO TECNICO.pdf
DESENHO TECNICO.pdf
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf
 
43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf43984869985 DESENHO TECNICO.pdf
43984869985 DESENHO TECNICO.pdf
 

Minicurso de HTML5 Canvas -

  • 1. Introdução ao HTML5 Canvas Compilação feita com base nas referências por: Prof. José Cintra http://www.josecintra.com/blog Download dos exemplos disponíveis no GitHub
  • 2. Apresentação O objetivo deste minicurso é fornecer conceitos básicos sobre o elemento CANVAS do HTML5, destinado a delimitar uma área para renderização dinâmica de gráficos e animações. 2
  • 3. Introdução <canvas> é um elemento HTML que pode ser usado para desenhar gráficos, exibir imagens, realizar animações, jogos, etc. Isso pode ser feito diretamente no browser, sem a necessidade de plug-ins, sendo que, todo o trabalho de criação e animação, é realizado através de linguagens de programação (normalmente Javascript). O elemento foi originalmente introduzido pela Apple para o navegador Safari mas, atualmente, a maioria dos browsers modernos oferecem suporte. 3
  • 4. O canvas é como um “quadro branco” onde vamos fazer nossos desenhos. Para defini-lo, crie um arquivo HTML através de qualquer editor de texto e digite o seguinte conteúdo: Nesse exemplo, criamos uma área de 400x400 pixels com borda. Caso o browser não tenha suporte para o canvas, será exibida a mensagem de fallback. Conceitos Iniciais 4 <html> <body> <canvas id=‘canvas’ width=‘400" height=’400’ style="border:1px solid;"> Seu navegador não suporta Canvas do HTML5. </canvas> </body> </html> 2
  • 5. A programação do canvas pode ser feita com a linguagem Javascript. Para isso, precisamos definir (obter) um objeto gráfico que vai representar a área de desenho e outro objeto para fazer o papel do pincel. Dessa forma: Conceitos Iniciais 5 <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); </script>
  • 6. A área de desenho é medida em pixels e assemelha-se ao plano cartesiano, com a diferença de que não existem coordenadas negativas. Conceitos Iniciais 6
  • 7. A cor do pincel (preto por padrão) pode ser definida através de quatro formas:  Cores predefinidas (blue, green,etc.)  Um valor hexadecimal como #FF0000 ou #555  Um valor RGB como rgb(255, 0, 0).  Uma valor RGB com opacidade como rgba(0,0,255,0.3) Além disso, pode-se definir o que vai ser pintado:  Cor do contorno (stroke style)  Cor de preenchimento (fill style) Veja aqui uma tabela de cores: HTML Color Names Cores 7
  • 8. Exemplos de definição de cores Para maiores detalhes e mais opções para trabalhar com cores, veja esse tutorial: MDN web docs – Canvas Colors Cores 8 <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); // 4 maneiras de setar a cor de preenchimento para laranja pincel.fillStyle = 'orange'; pincel.fillStyle = '#FFA500'; pincel.fillStyle = 'rgb(255, 165, 0)'; pincel.fillStyle = 'rgba(255, 165, 0, 1)'; // 4 maneiras de setar a cor de contorno para laranja pincel.strokeStyle = 'orange'; pincel.strokeStyle = '#FFA500'; pincel.strokeStyle = 'rgb(255, 165, 0)'; pincel.strokeStyle = 'rgba(255, 165, 0, 1)'; </script> strokeStyle
  • 9. Um Path (caminho) é uma forma de indicar que você pretende realizar uma série de desenhos no canvas que vão ser renderizados todos juntos no final do path e, por isso, são tratados como uma unidade. Para isso, podemos usar os seguintes métodos: 1. beginPath: Inicia ou limpa um path 2. closePath: Indica o fim do path 3. stroke: Desenha os contornos dos desenhos do path 4. fill: Preenche as figuras criadas no path Obs: Os dois últimos métodos fazem um closePath implícito. Paths 9 strokeStyle
  • 10. Para desenharmos linhas, podemos usar os métodos abaixo: moveTo(x,y) Move o pincel para a coordenada (x,y) lineTo(x,y) Desenha uma linha iniciando na posição do pincel até o ponto (x,y) Para maiores detalhes e mais opções para trabalhar com linhas, veja esse tutorial: HTML5 Canvas Lines Figuras Básicas - Linhas 10 strokeStyle
  • 11. Exemplo de desenho de uma linha: Resultado: Figuras Básicas - Linhas 11 <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); pincel.beginPath(); pincel.moveTo(10,45); pincel.lineTo(180,45); pincel.strokeStyle = ‘red’; pincel.stroke(); </script> strokeStyle
  • 12. Para desenhar um retângulo, usamos o método rect: rect(x,y,width,height); Onde: x,y: Coordenada do vértice superior esquerdo Width: Largura do retângulo Height:Altura do retângulo Para maiores detalhes e mais opções para trabalhar com retângulos, veja esse tutorial: HTML Canvas rect Figuras Básicas - Retângulos 12 strokeStyle
  • 13. Exemplo do desenho de um retângulo: Resultado: Figuras Básicas - Retângulos 13 <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); //Desenho de um retângulo amarelo com borda preta pincel.beginPath(); pincel.rect(188, 50, 200, 100); pincel.fillStyle = 'yellow'; pincel.strokeStyle = 'black'; pincel.fill(); pincel.stroke(); </script> strokeStyle
  • 14. Para desenhar um círculo, usamos o método arc: arc(x, y, r, sAngle, eAngle, counterclockwise) Onde: x,y: Coordenada do centro do círculo; r: O Raio do círculo; sAngle: Ângulo de início da circunferência; eAngle: Ângulo final da circunferência; Counterclockwise: Parâmetro opcional indicando se o desenho será no sentido horário ou não. Para maiores detalhes e mais opções para trabalhar com círculos, veja esse tutorial: HTML Canvas arc Figuras Básicas - Círculos 14 strokeStyle
  • 15. Exemplo do desenho de um círculo: Resultado: Figuras Básicas - Círculos 15 <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); //Desenho de um círculo verde com borda preta pincel.beginPath(); pincel.arc(100,75,50,0,2*Math.PI); pincel.fillStyle = 'green'; pincel.strokeStyle = '#003300'; pincel.lineWidth = 5; pincel.fill(); pincel.stroke(); </script> strokeStyle
  • 16. As demais formas gráficas devem ser desenhadas a partir das figuras básicas (linhas, retângulos e círculos) Veja, por exemplo, o desenho de um triângulo: Figuras Básicas – Outras figuras 16 strokeStyle <script> var canvas = document.getElementById(“canvas”); var pincel = canvas.getContext(“2d”); pincel.beginPath(); pincel.moveTo(100, 100); Resultado: pincel.lineTo(100, 300); pincel.lineTo(300, 300); pincel.closePath(); pincel.lineWidth = 4; pincel.strokeStyle = '#666666'; pincel.fillStyle = "#FFCC00"; pincel.stroke(); pincel.fill(); </script>
  • 17. Para escrever textos no canvas, usamos as seguintes propriedades e métodos:  font – Define as propriedades da fonte usada nos textos  fillText(text,x,y) – Escreve um texto com preenchimento  strokeText(text,x,y) – Excreve um texto sem preenchimento Onde: x,y: representam as coordenadas onde se deseja escrever o texto. Obs: Pra centralizar o texto no canvas, use: canvas.width/2, canvas.height/2 Maiores detalhes: HTML CanvasText Textos 17 strokeStyle
  • 18. Exemplo de escrita de textos Resultado: Textos 18 strokeStyle <script> var pincel = document.getElementById('canvas').getContext('2d'); pincel.font = "30px Arial"; pincel.strokeStyle = 'green'; pincel.fillStyle = 'red'; pincel.fillText("Hello”,10,50); pincel.strokeText(“World”,10,200); </script> var ctx = document.getElementById('canvas').getContext('2d');
  • 19. Você pode Exibir arquivos de imagens (jpg,png) através do comando abaixo drawImage(image, dx, dy) Onde: image: é um objeto do tipo image, que representam uma imagem lida de um arquivo ou de um elemento‘img’ do html dx,dy: As coordenadas de destino no canvas Obs:Antes é necessário criar um objeto image. Maiores detalhes: HTML Canvas Image Imagens 19 strokeStyle
  • 20. Exemplo: desenhando a imagem de um arquivo Resultado: Imagens 20 strokeStyle <script> var pincel = document.getElementById('canvas').getContext('2d'); var img = new Image(); img.onload = function () { pincel.drawImage(img, 0, 0); }; img.src = 'html5.png'; </script> var ctx = document.getElementById('canvas').getContext('2d');
  • 21. Exemplo 1 – Desenhando uma casa 21 strokeStyle <script> var pincel = document.getElementById('canvas').getContext('2d'); pincel.moveTo(100, 25); pincel.lineWidth = 2; pincel.lineTo(300, 25); pincel.lineTo(325, 100); pincel.lineTo(150, 100); pincel.closePath(); pincel.fillStyle = "#C81E1E"; pincel.fill(); pincel.moveTo(100, 25); pincel.lineTo(25, 100) pincel.moveTo(30, 95); pincel.lineTo(30, 200); pincel.lineTo(150, 200); pincel.stroke(); pincel.moveTo(150, 100); pincel.lineTo(150, 200); pincel.lineTo(325, 190); pincel.lineTo(325, 100); pincel.closePath(); pincel.stroke(); pincel.fillStyle = "#91913C"; pincel.fillRect(68, 125, 40, 75); </script> var ctx = document.getElementById('canvas').getContext('2d'); Créditos: http://www.authorcode.com/drawing-custom-shapes-in-html5-canvas/
  • 22. Exemplo 2 – Desenhando o Smiley 22 strokeStyle <script> var pincel = document.getElementById('canvas').getContext('2d'); pincel.beginPath(); pincel.arc(75, 75, 50, 0, Math.PI * 2, true); // Rosto pincel.fillStyle = 'yellow'; pincel.fill(); pincel.moveTo(110, 75); pincel.arc(75, 75, 35, 0, Math.PI, false); // Boca pincel.moveTo(65, 65); pincel.arc(60, 65, 5, 0, Math.PI * 2, true); // olho esquerdo pincel.moveTo(95, 65); pincel.arc(90, 65, 5, 0, Math.PI * 2, true); // Olho direito pincel.stroke(); </script> var ctx = document.getElementById('canvas').getContext('2d'); Créditos: https://codepen.io/Nir_Dayan/pen/caeAn/
  • 23. Exemplo 3 – Quadrados Aninhados 23 strokeStyle <script> //Usando estruturas de repetição para desenhar os quadrados var pincel = document.getElementById('canvas').getContext('2d'); for(x = 70; x > 0;x -= 10){ pincel.strokeRect(100-(x/2),100-(x/2),x,x) } </script> var ctx = document.getElementById('canvas').getContext('2d'); Créditos: https://codepen.io/Nir_Dayan/pen/caeAn/
  • 24. Os exemplos fornecidos devem lhe trazer algumas ideias sobre o que você pode fazer com o canvas e irá fornecer trechos de código que podem lhe ajudar na construção do seu próprio conteúdo. No entanto, não esgotamos o assunto. Existem vários outros recursos disponibilizados pela API que não cobrimos nesse minicurso. Para se aprofundar mais sobre o assunto, consulte a bibliografia a seguir. Conclusão 24 strokeStyle
  • 25. Web  Mozilla MDN  W3Schools  HTML5 CanvasTutorials Livros  CANVAS HTML 5 – Composição gráfica e interatividade na web • Roque Fernando Marcos Sousa • Brasport Editora  Desenvolva jogos com HTML5 Canvas e JavaScript • Éderson Cássio • Editora Casa do Código Referências 25 strokeStyle