Antialiasing saat menggambar garis di Canvas di Firefox

Saya mencoba menggambar diagram dengan kanvas dan ingin mendapatkan garis yang tajam, bukan anti-alias. Saya tahu tentang offset 0,5 yang perlu Anda gunakan untuk membuat garis jatuh tepat pada piksel layar, tetapi bahkan dengan itu saya mendapatkan garis anti-alias di Firefox, sementara Chrome dan IE merendernya dengan baik.

Berikut beberapa contoh kode:

JS:

var canvas = document.getElementsByTagName('canvas')[0];
var ctx = canvas.getContext('2d');
canvas.width = 100;
canvas.height = 100;

ctx.translate(-0.5, -0.5); //To get crisp lines
ctx.lineWidth = 1;
ctx.strokeStyle = 'black';
for (var x = 20; x < 100; x += 20){
    ctx.moveTo(x, 20);
    ctx.lineTo(x,100);
    ctx.stroke();
}

Lihat JsFiddle: http://jsfiddle.net/einaregilsson/9yrF6/8/

Ini tampilannya di Chrome dan IE:

Garis yang dirender Chrome

Ini tampilannya di Firefox:

Firefox menampilkan garis

Ini adalah Firefox 26 di Windows 7. Saya sudah mencoba mematikan akselerasi perangkat keras, yang disarankan seseorang tetapi tidak ada bedanya. Adakah ide bagaimana saya bisa mendapatkan garis yang jelas di Firefox?

Selain itu, apakah ada orang di Firefox yang tidak mendapatkan baris anti-alias saat melihat Fiddle? Saya ingin tahu apakah ini masalah umum Firefox, atau masalah khusus pada pengaturan saya.


person Einar Egilsson    schedule 20.01.2014    source sumber


Jawaban (2)


Sepertinya Anda sedikit memperbesar Firefox (perhatikan bagaimana jarak barisnya sedikit lebih jauh)

Tekan Ctrl+0 untuk mengatur ulang tingkat zoom. Ini akan memperbaiki masalah Anda.

person Niet the Dark Absol    schedule 20.01.2014
comment
Terima kasih. Menyetel ulang zoom sebenarnya tidak berhasil, saya pernah melakukannya sebelumnya. Namun setelah membaca jawaban Anda, saya mencari dan menemukan ini: support.mozilla.org/en-US /questions/963759 yang menyebutkan bahwa Firefox menghormati tingkat zoom default yang telah saya tetapkan di pengaturan OS saya, yaitu 125%, jadi itulah yang juga ditetapkan oleh Ctrl+0. Mengubahnya kembali menjadi 100% memperbaiki masalah. Terima kasih. - person Einar Egilsson; 20.01.2014
comment
Atau, jika Anda ingin mempertahankan zoom OS Anda pada 125%, namun membiarkan Firefox mengontrol tingkat zoomnya sendiri, Anda dapat membuka about:config dan mengubah layout.css.devPixelsPerPx menjadi 1.0. Secara default -1.0, yang berarti menggunakan pengaturan OS. - person Einar Egilsson; 20.01.2014
comment
Bagaimana dengan FirefoxMobile? - person Thomas Decaux; 24.03.2014

Seharusnya gambarnya terlihat jelas di Firefox juga, Anda mungkin telah memperbesarnya. Setel ulang zoom (CTRL+0)

person ArtBIT    schedule 20.01.2014