java 使用双打绘制矩形

199*_*7DK 0 java swing

我有一段代码可以在屏幕上打印一个正方形。

g.fillRect(X,Y,squareSize,squareSize);
Run Code Online (Sandbox Code Playgroud)

为了获得我正在使用的正方形尺寸:

int squareSize = (400/gridsize)-1;
Run Code Online (Sandbox Code Playgroud)

其中gridsize可以是 3-200 之间的任意数字

但是如果我超过 130squareSize则始终为 1。是否有一个版本

g.fillRect
Run Code Online (Sandbox Code Playgroud)

使用双精度值而不是整数值?

因为如果超过 130 的值四舍五入为 1,那么正方形的大小都是相同的,而根据情况它们的大小应该不同。

所以这是视觉形式的问题。

150×150

200×200

Flo*_*d2d 5

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); 
Run Code Online (Sandbox Code Playgroud)

无论如何,如果您尝试以亚像素精度进行绘制,则需要启用RenderingHints.VALUE_STROKE_PURE. 你可以像这样启用它

g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
Run Code Online (Sandbox Code Playgroud)