Actualmente estoy haciendo unas pruebas con canvas, sin embargo tengo algunas dudas al querer colocar texto sobre mi lienzo, por ejemplo:
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Proyecto Canvas</title> <!--Incluimos librería para movimiento de imagenes en Canvasy cargamos archivos JS--> <script src="lib/kinetic-v2.3.2.js"></script> <script src="js/banner.js"></script> <script type="text/javascript"> //En esta sección definimos si el navegador soporta canvas function cargaContextoCanvas(idCanvas){ var elemento = document.getElementById(idCanvas); if(elemento && elemento.getContext){ var contexto = elemento.getContext('2d'); if(contexto){ return contexto; } } return FALSE; } </script> </head> <body onmousedown="return false;"> <h3>Proyecto Canvas</h3> <table width="1244" height="600" border="1"> <tr> <td colspan="2"> </td> </tr> <tr> <td width="170" rowspan="2"> </td> <td width="1079" rowspan="2" valign="top"> <div id='container' class="drawImage" style="padding: 10px"> </div> <!--<canvas id="container" class="drawImage" style="border: 1px solid grey" width="1030" height="360"></canvas>--> </td> </tr> </table> </body> </html>
Código:
Al ejecutar la página todo funciona correctamente, pero por ejemplo, si ven en la parte de HTML, tengo en un div la instrucción para que pinte el lienzo: //Iniciamos la función para definir el contenedor de la imagen, posiciones y dimensiones function drawImage(imageObj){ var stage = new Kinetic.Stage("container", 1030, 360); var canvas = stage.getCanvas(); var rectX = canvas.width / 2 - 200 / 2; var rectY = canvas.height / 2 - 137 / 2; var draggingRect = false; var draggingRectOffsetX = 0; var draggingRectOffsetY = 0; var canvasImg = Kinetic.drawImage(imageObj, rectX, rectY, 745, 100); var canvasImg = new Kinetic.Shape(canvasImg); canvasImg.addEventListener("mousedown", function(){ draggingRect = true; var mousePos = stage.getMousePos(); draggingRectOffsetX = mousePos.x - canvasImg.x; draggingRectOffsetY = mousePos.y - canvasImg.y; }); canvasImg.addEventListener("mouseover", function(){ document.body.style.cursor = "pointer"; }); canvasImg.addEventListener("mouseout", function(){ document.body.style.cursor = "default"; }); // Eventos de movimiento de la imagen con el mouse stage.add(canvasImg); stage.addEventListener("mouseout", function(){ draggingRect = false; }, false); stage.addEventListener("mousemove", function(){ var mousePos = stage.getMousePos(); if (draggingRect) { canvasImg.x = mousePos.x - draggingRectOffsetX; canvasImg.y = mousePos.y - draggingRectOffsetY; canvasImg.draw(); } }, false); stage.addEventListener("mouseup", function(){ draggingRect = false; }); } // Cargamos la imagen y la desplegamos en la página window.onload = function(){ // load image var imageObj = new Image(); imageObj.onload = function(){ drawImage(this); }; imageObj.src = 'img/SB_4170596_BI.png'; }; function drawText(){ var canvas = document.getElementById('canvas'); if(canvas.getContext){ var ctx = getContext('2d'); ctx.fillStyle ='#00F'; ctx.font ='Bold 30px Sans-Serif'; ctx.textBaseline ='Top'; ctx.fillText('$1,990',40,40); } else{ alert('IE7 no puede ejecutar canvas'); } }
Código HTML:
<div id='container' class="drawImage" style="padding: 10px">
Código HTML:
<canvas id="container" class="drawImage" style="border: 1px solid grey" width="1030" height="360"></canvas>
De antemano, muchas gracias por sus comentarios. Por cierto, lo estoy ejecutando en Chrome, Safari, Opera y Firefox.