2012-02-16 1 views
18

Quando provo a disegnare singolo pixel linea nera con il seguente codice:Tracciare la linea di pixel singolo in HTML5 canvas

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

Ho più di una linea di pixel con bordo grigio. Come sistemarlo?

Ecco un esempio http://jsfiddle.net/z4VJq/

+0

c'è forse uno stile css sulla tela? –

+0

@EvilP vedere l'esempio nel mio post – Neir0

+0

Vedere questo: http://jsfiddle.net/z4VJq/5/; Ho ingrandito la tela di 5 volte per aiutarti a vedere cosa sta succedendo. – Phrogz

risposta

60

Chiamare la funzione con queste coordinate invece: drawLine(30,30.5,300,30.5);. Provalo in jsFiddle.

Il problema è che il colore sarà a un bordo, quindi il colore sarà a metà del pixel sopra il bordo e a metà del bordo. Se si imposta la posizione della linea nel mezzo di un numero intero, verrà disegnata all'interno di una linea di pixel.

Questa immagine (dal articolo collegato sotto) illustra che:

enter image description here

Si può leggere di più su questo su Canvas tutorial: A lineWidth example.

+0

ma se hai reso 'lineWidth' un po 'più grande vedrai blur' context.lineWidth = 10; ' – mgraph

+0

sto usando l'ultima versione di Chrome – mgraph

+2

@mgraph: Vero, hai ragione, ottieni una sfocatura con' lineWidth = 10', perché è un numero pari, ma non se si imposta 'lineWidth = 11', ed è così che dovrebbe essere. – Jonas