2017-04-27 5 views
0

ctx.lineTo()で作成されたオブジェクトを描画すると、オブジェクトが終了して接続されません。あなたが見るように、私は三角形を描きました、そして、先端は平坦に見えます。しかし、そのうち2つは意味がありません。誰でも知っている理由は?前もって感謝します!自動オブジェクトが接続されていませんJavascript Canvas

var canvas = document.getElementById("canvas"); 
 
var ctx = canvas.getContext("2d"); 
 
ctx.lineWidth = 3; 
 
ctx.strokeStyle = "orange"; 
 
ctx.beginPath(); 
 
ctx.moveTo(10,13.031); 
 
ctx.lineTo(13.5,6.969); 
 
ctx.lineTo(6.5,6.969); 
 
ctx.lineTo(10,13.031); 
 
ctx.stroke();
<canvas id="canvas"></canvas>

答えて

0

あなたは浮動小数点値を使用しているとして、あなたのxy座標は適切ではない、ので、問題はおそらく発生しました。

あなたはそれよりスムーズ

var canvas = document.getElementById('canvas'); 
 
var ctx = canvas.getContext('2d'); 
 

 
ctx.scale(11, 11); // for better visibility 
 

 
ctx.lineWidth = 1; 
 
ctx.strokeStyle = "orange"; 
 
ctx.beginPath(); 
 
ctx.lineCap = "round"; 
 
ctx.lineJoin = "round"; 
 
ctx.moveTo(10, 13.031); 
 
ctx.lineTo(13.5, 6.969); 
 
ctx.lineTo(6.5, 6.969); 
 
ctx.lineTo(10, 13.031); 
 
//ctx.closePath() //<-- this also could be used 
 
ctx.stroke();
body{margin:0;overflow:hidden}canvas{border:1px solid #d3d3d3}
<canvas id="canvas" width="218" height="218"></canvas>

を作るためにlineCaplineJoinメソッドを使用することができたり、あなたも前にctx.closePath()を使用することができますがctx.stroke()

+2

あなたの答えが間違っているあなたがたlineJoinを設定しているため、それだけで正しく見えますラウンドとしてlineCap。他の設定を使用すると、その行が結合されていないことがわかります。パスの始めと終わりを結ぶ唯一の方法は、closePath – Blindman67

0

=の代わりに第三lineToのあなたのケースでは、あなただけのctx.closePath() をする必要があり、その後、あなたは色であなたの形状を埋めることができます)

var canvas = document.getElementById("canvas"); 
 
var ctx = canvas.getContext("2d"); 
 

 
ctx.lineWidth = 1; 
 

 
ctx.beginPath(); 
 
ctx.moveTo(10,13); 
 
ctx.lineTo(13.5,6.969); 
 
ctx.lineTo(6.5,6.969); 
 
ctx.closePath(); 
 

 
ctx.strokeStyle = "orange"; 
 
ctx.stroke(); 
 

 
ctx.fillStyle = "orange"; 
 
ctx.fill();
<canvas id="canvas"></canvas>

+0

@Kaiidoで、ES標準に準拠していますが、Firefoxではうまくいきません。=)だから、fillの前に常にclosePathを使うことをお勧めします。 http://stackoverflow.com/questions/14060495/html-canvas-fill-difference-on-firefox-vs-chrome –

+0

これはクロムバグで、修正されました。 FFの振る舞いは正しいですが、この質問のOPは、 'arc'呼び出しの間にctx.moveToを追加するべきです:http://jsfiddle.net/Xqu5U/13/ – Kaiido

+0

私の悪い(標準について)、私のFirefox 53それは 'closePath'ととは違って動作します。 https://jsfiddle.net/qyetsvk8/ –

関連する問題