java使用双打

时间:2017-03-20 23:05:44

标签: java swing

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

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

enter image description here

1 个答案:

答案 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);