我有一段代码可以在屏幕上打印一个正方形。
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

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)