2011-08-25 7 views
19

मैं कई चक्र अलग अलग रंगएक रास्ते में अलग अलग रंगों आकार ड्राइंग (एचटीएमएल 5 कैनवास/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(); 

से भर आर्क्स आकर्षित करने के लिए यह लाल रंग के साथ में भरा दोनों आर्क्स पैदा करता है, और मैं बता सकता है कि कोशिश कर रहा हूँ छोटे के चारों ओर एक बेहोश काला रूपरेखा है।

enter image description here

किसी को भी मैं यह कैसे पूरा कर सकते हैं पर कुछ प्रकाश डाला सकता है? मैं क्या गलत कर रहा हूँ?

+0

का उपयोग करते हुए विपरीत दिशा में दूसरा, जब आप पथ बंद करते हैं, तो मेरा मानना ​​है कि यह उन्हें दोनों को खींचता है (लाल रंग के नीचे लाल रंग, छोटे के लिए वृत्त)। – alex

+0

अच्छा सवाल, मैं बस यह सोच रहा था और आपके प्रश्नों और उत्तरों ने मुझे मदद की। धन्यवाद! – Emanegux

उत्तर

35

पथ बंद करें और फिर इसे फिर से खोलें।

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

jsFiddle

... आर्क ड्राइंग कोड के बीच।

+1

'क्लोजपथ' पथ घोषणा को समाप्त नहीं करता है, यह सिर्फ 'move' (firstDeclaredCordinates) 'है। – Kaiido

-2

एक रास्ता beginPath साथ शुरू होता है और endPath साथ समाप्त होता है। बीच में हर चीज एक ही रास्ता है। विंगिंग नियमों का उपयोग करके आप उनमें छेद के साथ पथ भी खींच सकते हैं। एक दिशा में कुछ और कुछ और विपरीत दिशा में खींचे लेकिन पहली चीज़ के अंदर। चलो लाइनों का उपयोग कर बीच में एक छेद के साथ एक आयत खींचें। startPath(); चाल (10,10); लाइन (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(); भरने();

आप किसी भी आकार के साथ ऐसा कर सकता है एक चाप का प्रयास करें। एक दिशा में फिर एक छोटे त्रिज्या

+2

'एंडपैथ' कैनवास 2 डी एपीआई में मौजूद नहीं है, और 'क्लोजपैथ' पथ घोषणा को समाप्त नहीं करता है, यह सिर्फ 'move' (firstDeclaredCordinates) 'है। – Kaiido

+0

मेरा बुरा, अंत पथ को हटा दें। beginPath(); चाल (10,10); lineTo (100,10); लाइन टू ((100,60); लाइन टू (10,60); लाइन टू (10,10); क्लोजपैथ(); moveTo (20,20); लाइन टू (20,50); लाइन टू (90,50); लाइन टू (9 0 , 20); लाइन टू (20,20); क्लोजपैथ(); भरें(); – neticous

+0

हालांकि, मैंने क्लोजपैथ का उपयोग नहीं होने पर कुछ ब्राउज़रों पर लीक लीक देखी है। – neticous

संबंधित मुद्दे