Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Draw single pixel line in html5 canvas

Tags:

html

canvas

When i try to draw single pixel black line with the following code:

    context.strokeStyle = '#000'; 
    context.beginPath();
    context.moveTo(x1, y1); 
    context.lineTo(x2, y2);
    context.lineWidth = 1;
    context.stroke();
    context.closePath();  

I have more then one pixel line with gray border. How to fix it?

Here is an example http://jsfiddle.net/z4VJq/

like image 260
Neir0 Avatar asked Feb 16 '12 12:02

Neir0


People also ask

How do I make a line in HTML5?

To draw a line using HTML5 Canvas is simple, just like draw a line on a paper, define a path, and then fill the path. See the following steps : Resets the current path using beginPath() method. Let move the drawing cursor to start point to create a new subpath using moveTo(x,y) method.

What is lineTo in canvas?

The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line). Tip: Use the stroke() method to actually draw the path on the canvas. JavaScript syntax: context.lineTo(x,y);


1 Answers

Call your function with these coordinates instead: drawLine(30,30.5,300,30.5);. Try it in jsFiddle.

The problem is that your color will be at an edge, so the color will be halfway in the pixel above the edge and halfway below the edge. If you set the position of the line in the middle of an integer, it will be drawn within a pixel line.

This picture (from the linked article below) illustrates it:

enter image description here

You can read more about this on Canvas tutorial: A lineWidth example.

like image 100
Jonas Avatar answered Sep 21 '22 06:09

Jonas