drawOval(x,y,width,height) メソッドの使用に問題があります。このメソッドは、x 値と y 値が「描画される楕円の左上隅」の座標を表すと想定しています ( javadoc ) 。
x と y の値が円の中心点を表すようにします。どうすればいいですか?ありがとう
幅/高さが事前に宣言されている場合、簡単な解決策は、drawOval
次のようにメソッドを使用することです。
drawOval( x - (width/2), y - (height/2), width, height);
これにより、(x, y) が楕円の中心にあることが保証されます。
なんで?
(x, y) が (10, 10) で、(高さ, 幅) = (10, 10) の楕円を描きたいとしましょう。
drawOval(x, y, height width);
次に、楕円の右上を(10, 10) に描画し、左下を (10 + 10, 10 + 10) = (20, 20)に描画します。
一方、使用する場合
drawOval( x - (width/2), y - (height/2), height, width);
楕円の右上は ( 10 - (10/2), 10 - (10/2) ) = (5, 5)で描画され、下は (5 + 10, 5 + 10) で描画されます。 = (15, 15) . 中心は(10、10)になります:)