É possível corrigir a largura e a altura de um HTML5 canvas
elemento ?
A maneira usual é a seguinte:
<canvas id="canvas" width="300" height="300"></canvas>
O canvas
elemento tem DOM .height
e .width
propriedades que correspondem a height="…"
e width="…"
atributos. Defina-os para valores numéricos no código JavaScript para redimensionar sua tela. Por exemplo:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Observe que isso limpa a tela, embora você deva seguir com ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
para lidar com os navegadores que não limpam completamente a tela. Você precisará redesenhar qualquer conteúdo que desejasse exibir após a alteração do tamanho.
Observe ainda que a altura e a largura são as dimensões lógicas da tela usadas para desenhar e são diferentes dos atributos style.height
e style.width
CSS. Se você não definir os atributos CSS, o tamanho intrínseco da tela será usado como tamanho de exibição; se você definir os atributos CSS e eles diferirem das dimensões da tela, seu conteúdo será redimensionado no navegador. Por exemplo:
// 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';
Veja este exemplo ao vivo de uma tela com zoom de 4x.
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
Se você quiser que o tamanho visual seja igual ao tamanho do pixel, nunca defina os estilos, apenas os atributos.Uma tela tem 2 tamanhos, a dimensão dos pixels na tela (é backingstore ou drawingBuffer) e o tamanho da exibição. O número de pixels é definido usando os atributos da tela. Em HTML
Ou em JavaScript
Além disso, são a largura e a altura do estilo CSS da tela
Em CSS
Ou em JavaScript
A melhor maneira de criar uma tela de pixels de 1 x 1 é SEMPRE USAR CSS para escolher o tamanho e escrever um pouquinho de JavaScript para fazer com que o número de pixels corresponda a esse tamanho.
Por que esse é o melhor caminho? Porque funciona na maioria dos casos sem precisar alterar nenhum código.
Aqui está uma tela cheia da janela:
Mostrar snippet de código
E aqui está uma tela como um flutuador em um parágrafo
Mostrar snippet de código
Aqui está uma tela em um painel de controle considerável
Mostrar snippet de código
aqui está uma tela como pano de fundo
Mostrar snippet de código
Como não defini os atributos, a única coisa que mudou em cada amostra é o CSS (no que diz respeito à tela)
Notas:
fonte
Muito obrigado! Finalmente, resolvi o problema de pixels borrados com este código:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
Com a adição do 'meio pixel', o truque é desfocar as linhas.
fonte
A melhor maneira de fazer isso:
fonte