O elemento canvas
A Canvas API permite a você desenhar na tela do navegador via Javascript. O único elemento HTML existente para isso é o elemento canvas, o resto todo é feito via Javascript. Veja como inserir o elemento canvas numa página:
<canvas id="x" width="300" height="300"></canvas>
Isso vai exibir um retângulo vazio. Para desenhar nele, primeiro obtemos o contexto de desenho, com Javascript:
context=document.getElementById('x').getContext('2d')
Existe um contexto 3D?
Ainda não. Existem várias implementações de contexto 3D, e cada fabricante de navegador tem criado a sua, mas ainda não há um padrão do W3C sobre esse assunto.
Agora que temos um contexto, podemos desenhar nele. Vamos começar com um simples retângulo:
context.fillRect(10, 10, 50, 150)
Simples, não? Que tal tentarmos algo um pouco mais complexo? Dê uma olhada no exemplo:
Arquivo: exemplos/14/canvas.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>Canvas API</title> 6 </head> 7 <body> 8 9 <canvas id="x" width="300" height="300"></canvas> 10 <button onclick="desenhar()">desenhar</button> 11 12 <script> 13 function desenhar(){ 14 // Obtemos o contexto 15 context=document.getElementById('x').getContext('2d') 16 17 //Iniciamos um novo desenho 18 context.beginPath() 19 20 //Movemos a caneta para o inicio do desenho 21 context.moveTo(150,50) 22 23 //Desenhamos as linhas 24 context.lineTo(220,250) 25 context.lineTo(50,125) 26 context.lineTo(250,125) 27 context.lineTo(80,250) 28 context.lineTo(150,50) 29 30 //O desenho não é de verdade enquanto você 31 //não mandar o contexto pintá-lo. 32 33 //Vamos pintar o interior de amarelo 34 context.fillStyle='#ff0' 35 context.fill() 36 37 //Vamos pintar as linhas de vermelho. 38 context.strokeStyle='#f00' 39 context.stroke() 40 41 } 42 </script> 43 44 </body> 45 </html>
E veja o que acontece quando se clica no botão:

Há muito mais para você estudar se quiser se aprofundar na Canvas API. Apenas para que você tenha uma idéia, é possível desenhar texto, sombras, gradientes, incluir imagens no canvas, manipular os pixels, rotacionar e transformar os objetos.
Canvas e SVG
Uma dúvida muito comum é quando usar Canvas, quando usar SVG. Para saber escolher, é preciso entender as diferenças entre um e outro. SVG é vetorial, e baseado em XML, logo, acessível via DOM. Canvas é desenhado pixel a pixel, via Javascript.
Assim, as vantagens do SVG são:
- O conteúdo é acessível a leitores de tela
- O gráfico é escalável, não perde resolução ou serrilha ao redimensionar
- O conteúdo é acessível via DOM
E as vantagens do Canvas:
- A performance é muito superior ao SVG na maioria dos casos
- É fácil desenhar via Javascript. Em SVG, é preciso fazer seu script escrever XML para você. Com Canvas você só manda desenhar, e pronto.