2017-03-20 13 views
-3

こんにちは皆私は画面に正方形を印刷するコードを用意しています。私は130 squareSize上に行けばgridsizeしかし3-200ダブル塗りを使用したJavaの塗りつぶしの矩形

間の任意の番号にすることができ

int squareSize = (400/gridsize)-1; 

を使用しています正方形のサイズを取得するために

g.fillRect(X,Y,squareSize,squareSize); 

は常に1であるバージョンがあります

g.fillRect 

整数値ではなく2倍を使用する?

130を超えるものに対して1にすると、四角形はすべて同じサイズですが、それに応じて異なるサイズにする必要があります。

これは視覚的な形式での問題です。

150by150 enter image description here

enter image description here

+4

ピクセルを表すダブル座標はどう思いますか? – Justas

+0

ああ、今私はそれを得ると思う... – 1997DK

+0

あなたは 'java.awt.Rectangle2D'を見ることができます – MadProgrammer

答えて

2

によってではなく整数値の2倍を使用していますg.fillRectのバージョンはありますか?

java.awt.Graphicsのドキュメントを読むと、二重のパラメータを持つfillRectはありません。

実際に二重値を使用する必要がある場合は、Rectangle2Dを使用し、fill(shape)メソッドを使用してこの図形を入力します。あなたがサブピクセル精度で描画しようとしている場合

double x = 0; 
double y = 0; 
double width = 100; 
double height = 100; 

Rectangle2D rect = new Rectangle2D.Double(x, y, width, height); 

//java.awt.Graphics doesn't have fill(shape), so you need to cast it to Graphics2D 
Graphics2D g2 = (Graphics2D) g; 

g2.fill(rect); 

はとにかくあなたはRenderingHints.VALUE_STROKE_PUREを有効にする必要があります。このように有効にすることができます

g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); 
関連する問題