How can I disable the antialias effect in the following code ? I'm using Chrome 29.
var canvas = document.getElementById( 'test' );
var context = canvas.getContext( '2d' );
// These lines don't change anything
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
context.beginPath();
context.arc(100, 100, 100, 0, Math.PI * 2, true );
context.closePath();
context.fillStyle = 'red';
context.fill( );
The imageSmoothingEnabled
only affects images drawn to canvas using drawImage()
(hence the name imageSmoothingEnabled). There is sadly no way to disable this for lines and shapes.
As with 6502's answer and previous answers on SO you will need to implement "low-level" methods to achieve this.
Here are some links to some common algorithms for various primitives:
The way you need to implement this is to get the x and y coordinates from these formulas. Then you need to either to use rect(x, y, 1, 1)
or set a pixel directly by altering the image data buffer directly. The latter tend to be faster for these sort of things.
In both cases you will have a relatively huge performance reduction as you need to iterate using JavaScript versus browser's internal compiled iteration.