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.


