2011-08-25 20 views
19
私はこれが赤で埋め両方のアークを生成し、私がいることを伝えることができます異なる色

(HTML5キャンバス/ 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

'closePath'はパス宣言を終了しません。単に' moveTo(firstDeclaredCoordinates) 'です。 – Kaiido

-2

パスがにbeginPathで始まりendPathで終わります。 間にあるものはすべて同じパスです。ウィングルールを使用して穴が空いているパスを描画することもできます。ある方向に何かを描画し、反対方向には最初のものの中に描画します。 線を使って真ん中に穴がある四角形を描きましょう。 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(); 塗りつぶし();

あなたはどのような形状でこれを行う弧を試みることができる

。一方の方向にもう一方の方向にもう一方の方向にもう一度小さな半径を使用してください

+2

'endPath'はcanvas2D APIには存在せず、' closePath'はパス宣言を終了しません。単に 'moveTo(firstDeclaredCoordinates)'です。 – Kaiido

+0

私の悪い、最後のパスを削除します。 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

しかし、closePathが使用されていない場合、いくつかのブラウザでは塗りつぶしの漏れが見られました。 – neticous

関連する問題