幅と高さが等しいfillRect
orを使用します。strokeRect
var x = 0, y = 0,
side = 10;
ctx.fillRect(x, y, side, side);
デモ
コメントで言っているように、最大の正方形を円に収めたい場合は、コードよりも数学に関連しています。私はあなたにそれを説明しようとしますが、おそらくインターネット上の他の場所でより良い、より視覚的な説明を見つけるでしょう.
正方形を 2 等分するように円の直径を描きます。これで、1 つの部分が直角三角形になり、2 つの辺が等しくなります。私たちは直径を知っています。ピトゴラスの定理を使用すると、次の式が得られます
side^2 + side^2 = diameter^2
。
今すぐ側面を見つけてみましょう。
2(side^2) = diameter^2
side^2 = (diameter^2)/2
side = Math.sqrt( (diameter^2)/2 )
では、これをコードに変換します。
var ctx = document.getElementById('canvas').getContext('2d'),
radius = 20;
ctx.canvas.addEventListener('click', function (e){
ctx.fillStyle = 'black';
ctx.arc(e.pageX, e.pageY, radius, 0, Math.PI*2, false);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = 'red';
var diameter = radius * 2;
var side = Math.sqrt( (diameter * diameter)/2 );
ctx.fillRect(e.pageX - side/2, e.pageY - side/2, side, side);
ctx.closePath();
}, false);
これにより、キャンバス上のどこをクリックしても、円の中に正方形が描画されます。
デモ