大家好我有一段代码可以在屏幕上打印一个正方形。
g.fillRect(X,Y,squareSize,squareSize);
获得正方形尺寸我正在使用
int squareSize = (400/gridsize)-1;
其中gridsize
可以是3到3之间的任何数字
但是如果我超过130 squareSize
总是1.是否有
g.fillRect
使用double而不是整数值?
因为如果它对于130以上的任何东西都是1,那么正方形的大小都是相同的,而它们的大小应该是不同的。
所以这是视觉形式的问题。
150by150 enter image description here
200乘200
答案 0 :(得分:3)
是否有
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);