¿Es posible arreglar el ancho y la altura de un canvas
elemento HTML5 ?
La forma habitual es la siguiente:
<canvas id="canvas" width="300" height="300"></canvas>
El canvas
elemento DOM tiene .height
y .width
propiedades que corresponden a los atributos height="…"
y width="…"
. Ajústelos a valores numéricos en el código JavaScript para cambiar el tamaño de su lienzo. Por ejemplo:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Tenga en cuenta que esto borra el lienzo, aunque debe seguir ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
para manejar los navegadores que no borran completamente el lienzo. Deberá volver a dibujar el contenido que desea que se muestre después del cambio de tamaño.
Tenga en cuenta además que la altura y el ancho son las dimensiones lógicas del lienzo utilizadas para dibujar y son diferentes de los atributos style.height
y style.width
CSS. Si no establece los atributos CSS, el tamaño intrínseco del lienzo se usará como su tamaño de visualización; si configura los atributos CSS y difieren de las dimensiones del lienzo, su contenido se escalará en el navegador. Por ejemplo:
// Make a canvas that has a blurry pixelated zoom-in
// with each canvas pixel drawn showing as roughly 2x2 on screen
canvas.width = 400;
canvas.height = 300;
canvas.style.width = '800px';
canvas.style.height = '600px';
Vea este ejemplo en vivo de un lienzo que se amplía 4x.
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
si desea que el tamaño visual sea el mismo que el tamaño de píxel, nunca configure los estilos, solo los atributos.Un lienzo tiene 2 tamaños, la dimensión de los píxeles en el lienzo (es backingstore o drawingBuffer) y el tamaño de visualización. El número de píxeles se establece utilizando los atributos del lienzo. En HTML
O en JavaScript
Separado de eso están el ancho y la altura del estilo CSS del lienzo
En CSS
O en JavaScript
La mejor manera de hacer un lienzo de 1x1 píxeles es SIEMPRE UTILIZAR CSS para elegir el tamaño y luego escribir un poco de JavaScript para que el número de píxeles coincida con ese tamaño.
¿Por qué es esta la mejor manera? Porque funciona en la mayoría de los casos sin tener que cambiar ningún código.
Aquí hay un lienzo de ventana completa:
Mostrar fragmento de código
Y aquí hay un lienzo como flotador en un párrafo
Mostrar fragmento de código
Aquí hay un lienzo en un panel de control considerable
Mostrar fragmento de código
aquí hay un lienzo como fondo
Mostrar fragmento de código
Como no configuré los atributos, lo único que cambió en cada muestra es el CSS (en lo que respecta al lienzo)
Notas:
fuente
¡Muchas gracias! Finalmente resolví el problema de píxeles borrosos con este código:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
Con la adición del 'medio píxel', el truco es desenfocar líneas.
fuente
La mejor manera de hacerlo:
fuente