Yanıtlar:
canvas
DOM öğesi vardır .height
ve .width
hiç özelliklerinin olduğunu uyumluluğunu height="…"
ve width="…"
nitelikler. Tuvalinizi yeniden boyutlandırmak için bunları JavaScript kodundaki sayısal değerlere ayarlayın. Örneğin:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Bu tuvali temizler, ancak bunu takip etmelisiniz ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
tamamen temizlemeyen tarayıcıları ele . Boyut değişikliğinden sonra görüntülenmesini istediğiniz içeriği yeniden çizmeniz gerekir.
Ayrıca, yükseklik ve genişliğin çizim için kullanılan mantıksal kanvas boyutları olduğunu ve ve CSS niteliklerinden farklı olduğunu unutmayın . CSS niteliklerini ayarlamazsanız, tuvalin gerçek boyutu görüntü boyutu olarak kullanılır; CSS niteliklerini ayarlarsanız ve bunlar tuval boyutlarından farklıysa, içeriğiniz tarayıcıda ölçeklendirilir. Örneğin:style.height
style.width
// 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';
4x oranında yakınlaştırılmış bir tuvalin bu canlı örneğine bakın .
Bir tuvalin 2 boyutu, tuvaldeki piksellerin boyutu (arka mağaza veya drawingBuffer) ve ekran boyutu vardır. Piksel sayısı, tuval özellikleri kullanılarak ayarlanır. HTML'de
<canvas width="400" height="300"></canvas>
Veya JavaScript'te
someCanvasElement.width = 400;
someCanvasElement.height = 300;
Bundan ayrı olarak, tuvalin CSS stili genişliği ve yüksekliği
CSS'de
canvas { /* or some other selector */
width: 500px;
height: 400px;
}
Veya JavaScript'te
canvas.style.width = "500px";
canvas.style.height = "400px";
Tuval 1x1 piksel yapmanın tartışmasız en iyi yolu , boyutu seçmek için DAİMA CSS KULLANMAK ve piksel sayısını bu boyuta ulaştırmak için küçük bir JavaScript yazmasıdır.
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;
}
Neden bu en iyi yol? Çünkü çoğu durumda herhangi bir kodu değiştirmek zorunda kalmadan çalışır.
Nitelikleri ayarlamadığım için her örnekte değişen tek şey CSS'dir (tuval söz konusu olduğunda)
Notlar:
Çok teşekkür ederim! Sonunda bu kod ile bulanık piksel sorunu çözüldü:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
'Yarım piksel' ilavesi ile çizgileri bulanıklaştırma hile yapar.
Bunu yapmanın en iyi yolu:
<canvas id="myChart" style="height: 400px; width: 100px;"></canvas>
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
Görsel boyutun piksel boyutuyla aynı olmasını istiyorsanız, stilleri asla ayarlamayın, yalnızca nitelikleri ayarlayın.