Sto provando a utilizzare la tela HTML5 per tracciare una linea rossa a sinistra di una linea verde. Qui è il mio javascript:Perché non riesco a disegnare due righe di colori diversi nel mio canvas HTML5?
var canvas = document.createElement('canvas');
canvas.height = 150;
canvas.width = 150;
var canvasContext = canvas.getContext('2d');
canvasContext.beginPath();
// Draw the red line.
canvasContext.strokeStyle = '#f00';
canvasContext.moveTo(10, 0);
canvasContext.lineTo(10, 100);
canvasContext.stroke();
// Draw the green line.
canvasContext.moveTo(50, 0);
canvasContext.strokeStyle = '#0f0';
canvasContext.lineTo(50, 100);
canvasContext.stroke();
document.body.appendChild(canvas);
Tuttavia, in Google Chrome, ottengo una linea verde scuro a sinistra di una linea verde chiaro. Perché? Ho chiamato ictus due volte giusto? Quindi, perché il mio primo colpo dovrebbe influenzare il mio secondo?
Here è un JSFiddle che illustra cosa intendo.
Grazie, se è il caso, ho una seconda domanda: perché la linea a sinistra è più scura dell'altra? Non ho impostato un valore di opacità per nessuna riga, quindi perché la tela ha unito i colori? – dangerChihuahua007
Sinceramente non ne ho idea. Guardando la [documentazione] (http://dev.w3.org/html5/2dcontext/#dom-context-2d-beginpath), sembra che 'beginPath()' cancella i sottotracciati, quindi probabilmente la seconda linea è (in qualche modo) una combinazione di quella precedente e quella attuale. – Blender
Penso che sia perché lo hai disegnato due volte, se togli il tratto iniziale, saranno entrambi gli stessi colori, anche se questo è ancora strano, non penso che i frame buffer siano stati cancellati, quando chiami più volte stroke, o qualcosa a che fare con l'opacità predefinita. –