Jawaban:
The canvas
elemen DOM memiliki .height
dan .width
sifat yang bersesuaian dengan height="…"
dan width="…"
atribut. Atur nilai numerik dalam kode JavaScript untuk mengubah ukuran kanvas Anda. Sebagai contoh:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Perhatikan bahwa ini menghapus kanvas, meskipun Anda harus mengikuti dengan ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
untuk menangani browser yang tidak sepenuhnya menghapus kanvas. Anda harus menggambar ulang konten yang Anda inginkan ditampilkan setelah perubahan ukuran.
Perhatikan lebih lanjut bahwa tinggi dan lebar adalah dimensi kanvas logis yang digunakan untuk menggambar dan berbeda dari style.height
dan style.width
CSS atribut. Jika Anda tidak menetapkan atribut CSS, ukuran intrinsik kanvas akan digunakan sebagai ukuran tampilan; jika Anda menetapkan atribut CSS, dan mereka berbeda dari dimensi kanvas, konten Anda akan diskalakan di browser. Sebagai contoh:
// 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';
Lihat contoh langsung dari kanvas ini yang diperbesar dengan 4x.
Kanvas memiliki 2 ukuran, dimensi piksel di kanvas (itu backingstore atau drawingBuffer) dan ukuran tampilan. Jumlah piksel diatur menggunakan atribut kanvas. Dalam HTML
<canvas width="400" height="300"></canvas>
Atau dalam JavaScript
someCanvasElement.width = 400;
someCanvasElement.height = 300;
Terpisah dari itu adalah lebar dan tinggi gaya CSS kanvas
Dalam CSS
canvas { /* or some other selector */
width: 500px;
height: 400px;
}
Atau dalam JavaScript
canvas.style.width = "500px";
canvas.style.height = "400px";
Cara terbaik untuk membuat kanvas 1x1 piksel adalah SELALU MENGGUNAKAN CSS untuk memilih ukuran kemudian menulis sedikit JavaScript untuk membuat jumlah piksel cocok dengan ukuran itu.
function resizeCanvasToDisplaySize(canvas) {
// look up the size the canvas is being displayed
const width = canvas.clientWidth;
const height = canvas.clientHeight;
// If it's resolution does not match change it
if (canvas.width !== width || canvas.height !== height) {
canvas.width = width;
canvas.height = height;
return true;
}
return false;
}
Mengapa ini cara terbaik? Karena itu berfungsi dalam banyak kasus tanpa harus mengubah kode apa pun.
Karena saya tidak mengatur atribut satu-satunya hal yang berubah dalam setiap sampel adalah CSS (sejauh menyangkut kanvas)
Catatan:
Terima kasih banyak! Akhirnya saya memecahkan masalah piksel kabur dengan kode ini:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
Dengan tambahan 'setengah-pixel' melakukan trik untuk menghapus garis-garis.
Cara terbaik untuk melakukannya:
<canvas id="myChart" style="height: 400px; width: 100px;"></canvas>
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
Jika Anda ingin ukuran visualnya sama dengan ukuran piksel, jangan pernah mengatur gayanya, hanya atributnya.