O día 2 de xaneiro entrou en vigor a Ley Antitabaco que prohibe fumar na maioría dos locais públicos salvo excepcións contadas. Para lembrarllo a xente ten que existir a cartelería correspondente nos locais. É aquí cando vexo os carteis de "Prohibido Fumar", e o sinxelo que sería debuxalos con simples trazos de liñas e círculos. Entón venme a cabeza a idea de debuxar un cartel de prohibido fumar empregando a tag canvas para deste modo ir probando funcionalidades de HTML5.
Botando man do libro "Dive into HTML5" do autor Mark Pilgrim e do seu capítulo "Let's Call it a Draw(ing Surface)" póñome mans a obra.
Para pintar o cartel precisamos un lenzo (canvas) sobre o que imos aplicar varios métodos de código javascript:
| Código HTML coa tag canvas#cartel | |
1 |
<canvas id="cartel" width="410" height="410"></canvas>
|
O código javascript non é ningunha marabilla pero amosa as posibilidades da etiqueta canvas. O primeiro que se fai é recuperar o elemento canvas facendo uso de document.getElementById e despois recuperamos o contexto 2d a partir do elemento canvas con getContext.
| Código javascript que imprime o cartel | |
1 |
<script type="text/javascript"> |
Un resumo dos métodos do contexto máis importantes e o que veñen facendo:
- ctxt.moveTo, moverse a coordenada indicada
- ctxt.lineTo, pintar unha liña dende o punto actual ao proporcionado no método
- ctxt.fillRect, pintar un rectángulo
- ctxt.beginPath e ctxt.closePath, bloque de comezo e fin do trazado dun path
- ctxt.arc, pinta un arco ou un círculo dependendo dos valores do ángulo (Math.PI * 2 = 360º)
Na seguinte imaxe fanse as correspondencias do código co resultado do debuxo:

No código fonte establécense uns temporizadores para ir pintando por partes os distintos elementos do debuxo. Evidentemente esta técnica permitiría crear gráficos para estatísticas dinámicos, por exemplo. A etiqueta canvas abre un mundo de posibilidades que con HTML4 tiñamos que botar man de flash, applets java, ... outros plugins.
Na sección Código fonte > Javascript das descargas está dispoñible o código fonte do exemplo para quen queira facer as súas modificacións e probas.
NOTA: para que este exemplo funcione en IExploter no apartado What about IE? do libro Dive into HTML5 explícase un workaround empregando o proxecto excanvas.





