6

java でアプリケーションの上部に向かって四角形を描くにはどうすればよいですか? 通常、drawRect メソッドは下に向かって描画します。負の数を使用しようとしましたが、これは機能しません。

Graphics g = p.getGraphics();
g.fillRect(50, 200,50,100);
4

3 に答える 3

10

長方形では、X 座標と Y 座標は左上隅を表します。長さと幅は定義点から引き離されます。この例では、左上隅が 50,200 で、幅が 50、高さが 100 の長方形を描画します。これらの点から正の方向に離れています。左下隅を表す 50,200 の長方形が必要な場合は、単純にその y 座標 (200) から高さを引き、それを開始 y として使用します。

Graphics g = p.getGraphics();
g.fillRect(50, 100, 50, 100);

あなたの例に対処するには、次のようなことを試してください(実際にグラフィックスを埋めるのではなく、長方形のオブジェクトを使用します):

int baseline = 200;
Rectangle rect1 = new Rectangle(50, baseline - 100, 50, 100);
Rectangle rect2 = new Rectangle(150, baseline - 50, 50, 50);
Rectangle rect3 = new Rectangle(250, baseline - 80, 50, 80);

グラフィックス オブジェクトでこれらの寸法の四角形を塗りつぶすと、幅がそれぞれ 50 で、間隔が 50 で、底がすべて y=200 の線上にある 3 つの四角形ができます。

于 2012-09-19T22:48:02.480 に答える
2

Java のクラスは、原点がフレームの左上隅、つまりの右下にあるとGraphics想定しています。これは、標準デカルト平面の原点が左下隅であり、 の右上にある数学に反します。(0, 0)(1, 1)(0, 0)(1, 1)(0, 0)

また、Java では、幅と高さに負の値を使用することはできません。これにより、通常の正のサイズの四角形とは異なる方法で四角形を処理する特別なロジックが生成されます。

必要なものを得るには、まず、Java の座標系の y 座標についての考え方を逆にしてくださいGraphics。正の y は下であり、上ではありません (ただし、標準のデカルト プロットのように、正の x はまだ正しいです)。

drawRectそうは言っても、とのフィールドは次のfillRectとおりです。

  1. 長方形の左上隅の x 座標
  2. 長方形の左上隅の y 座標
  3. 長方形の正の幅
  4. 長方形の正の高さ

drawRectZoe's answer は、必要なものを取得する方法の良い例を示しています。「メソッドが下に向かって描画される」理由について、より完全な説明が必要だと思いました。

于 2012-09-19T23:04:09.853 に答える