Can I turn off antialiasing on an HTML <canvas> element?
I'm playing around with the <canvas>
element, drawing lines and such.
I've noticed that my diagonal lines are antialiased. I'd prefer the jaggy look for what I'm doing - is there any way of turning this feature off?
Draw your 1-pixel
lines on coordinates like ctx.lineTo(10.5, 10.5)
. Drawing a one-pixel line over the point (10, 10)
means, that this 1
pixel at that position reaches from 9.5
to 10.5
which results in two lines that get drawn on the canvas.
A nice trick to not always need to add the 0.5
to the actual coordinate you want to draw over if you've got a lot of one-pixel lines, is to ctx.translate(0.5, 0.5)
your whole canvas at the beginning.
For images there's now context.imageSmoothingEnabled
= false
.
However, there's nothing that explicitly controls line drawing. You may need to draw your own lines (the hard way) using getImageData
and putImageData
.
It can be done in Mozilla Firefox. Add this to your code:
contextXYZ.mozImageSmoothingEnabled = false;
In Opera it's currently a feature request, but hopefully it will be added soon.