Si j'essaie de dessiner du texte sur mon canevas lors de l'événement onload, le texte apparaît flou. Je dessine sur la même toile plus tard via un clic de bouton d'une autre fonction et c'est bien. Mais si j'appelle cette fonction à partir du bouton, il est encore flou. Quelqu'un peut-il voir quelque chose de mal dans ce code?
window.onload = initCanvasRender; function initCanvasRender() { var c = document.getElementById("canvas"); var ctx = c.getContext('2d'); ctx.setTransform(1, 0, 0, 1, 0, 0); ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillStyle = 'black'; ctx.font = '20px Times New Roman'; ctx.fillText('hello...', c.width/2, c.height/2); }
Il peut y avoir un problème avec le
ctx.fillText('hello...', c.width/2, c.height/2);
Parce que si, par exemple, vous définissez la largeur du canevas avec css, alors c.width
et c.height
seront la taille par défaut du canevas qui est, 300×150 et pas la taille définie dans css. Essayez de définir deux variables pour la largeur et la hauteur qui sont globales pour votre application. Par exemple
var canvasWidth = 400px; var canvasHeight = 200px; c.width = canvasWidth; c.height = canvasHeight; /* ... */
Et plus tard dans votre code, vous pouvez utiliser canvasWidth
et canvasWeight
:
ctx.fillText('hello...', canvasWidth/2, canvasHeight/2);
Jetez un oeil à ce test: http://jsfiddle.net/EsQfb/7/ il est important d'utiliser utiliser la canvas.width
et pas canvas.style.width
dans votre cas.
Regardez ceci pour plus d'informations à ce sujet: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#attr-canvas-width