2011-08-25 15 views
19

sto cercando di disegnare più archi di cerchio riempiti con diversi coloriDisegno diverse forme colorate in un percorso (HTML5 Canvas/Javascript)

 //-------------- draw 
     ctx.beginPath(); 
     ctx.fillStyle = "black"; 
     ctx.arc(30, 30, 20, 0, Math.PI*2, true); 
     ctx.fill(); 
     ctx.fillStyle = "red"; 
     ctx.arc(100, 100, 40, 0, Math.PI*2, true); 
     ctx.fill(); 
     ctx.closePath(); 

Questo produce entrambi gli archi riempiti con il rosso, e posso dire che c'è un debole contorno nero attorno a quello più piccolo.

enter image description here

Qualcuno può fare luce su come posso fare questo? cosa sto facendo di sbagliato?

+0

Quando si chiude il percorso, credo che li disegni entrambi (quello nero sotto quello rosso, per il più piccolo cerchio). – alex

+0

buona domanda, mi stavo solo chiedendo questo e le vostre domande e risposte mi hanno aiutato. Grazie! – Emanegux

risposta

35

Chiudere il percorso e quindi riaprirlo.

ctx.closePath(); 
ctx.beginPath(); 

jsFiddle.

... tra il codice di disegno dell'arco.

+1

'closePath' non termina la dichiarazione del percorso, è solo un' moveTo (firstDeclaredCoordinates) '. – Kaiido

-2

Un percorso inizia con BeginPath e termina con endPath. Ogni cosa in mezzo è la stessa strada. Puoi persino tracciare percorsi con buchi usando le regole alate. Disegna qualcosa in una direzione e qualcos'altro nella direzione opposta, ma all'interno della prima cosa. Disegniamo un rettangolo con un buco nel mezzo usando le linee. beginPath(); moveTo (10,10); lineTo (100,10); lineTo ((100,60); lineTo (10,60); lineTo (10,10); closePath(); moveTo (20,20); lineTo (20,50); lineTo (90 , 50); lineTo (90,20); lineTo (20,20); closePath(); endPath(); di riempimento();

Si potrebbe fare questo con qualsiasi forma Prova un arco. in una direzione poi un'altra nella direzione opposta utilizzando un raggio più piccolo

+2

'endPath'non esiste nell'API canvas2D e' closePath' non termina la dichiarazione del percorso, è solo un 'moveTo (firstDeclaredCoordinates)'. – Kaiido

+0

Il mio male, rimuovere il percorso finale. BeginPath(); moveTo (10,10); lineTo (100,10); lineTo ((100,60); lineTo (10,60); lineTo (10,10); closePath(); moveTo (20,20); lineTo (20,50); lineTo (90,50); lineTo (90 , 20); lineTo (20,20); closePath(); fill(); – neticous

+0

Tuttavia, ho visto perdite di riempimento su alcuni browser quando closePath non è stato utilizzato. – neticous

Problemi correlati