NOT : Bu nasıl bir ilgisi vardır büyütülüyor zaman mevcut tuval elemanları oluşturulur , değil çizgiler veya grafik render nasıl bir ilgisi bir tuval yüzeyine . Başka bir deyişle, bu işle her şeye sahiptir interpolasyon ait ölçekli elemanları ve alakası yoktur antialiasing grafik bir tuvale çizilmiş olma. Tarayıcının çizgileri nasıl çizdiğiyle ilgilenmiyorum; Tarayıcının tuval öğesinin büyütüldüğünde kendisini nasıl oluşturduğunu önemsiyorum.
<canvas>
Öğeleri ölçeklendirirken enterpolasyonu devre dışı bırakmak için programla değiştirebileceğim bir tuval özelliği veya tarayıcı ayarı var mı? Çapraz tarayıcı çözümü idealdir ancak zorunlu değildir; Webkit tabanlı tarayıcılar ana hedefimdir. Performans çok önemlidir.
Bu soru en çok benzerdir ancak sorunu yeterince göstermez. Değeri ne olursa olsun, image-rendering: -webkit-optimize-contrast
boşuna uğraşmadım.
Uygulama, neye ihtiyacım olduğunu netleştirmek için HTML5 + JS ile yazılmış "retro" 8-bit tarzlı bir oyun olacak.
Açıklamak için, işte bir örnek. ( canlı sürüm )
21x21 tuvalim olduğunu varsayalım ...
<canvas id='b' width='21' height='21'></canvas>
... elemanı 5 kat daha büyük yapan (105x105) css'e sahip:
canvas { border: 5px solid #ddd; }
canvas#b { width: 105px; height: 105px; } /* 5 * 21 = 105 */
Tuval üzerine şu şekilde basit bir 'X' çiziyorum:
$('canvas').each(function () {
var ctx = this.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(21,21);
ctx.moveTo(0,21);
ctx.lineTo(21,0);
ctx.stroke();
});
Soldaki resim, Chromium'un (14.0) sunduğu şeydir. Sağdaki resim istediğim şeydir (açıklama amacıyla elle çizilmiş).