java使用double绘制矩形
大家好,我有一段代码,可以在屏幕上打印一个正方形java使用double绘制矩形,java,swing,Java,Swing,大家好,我有一段代码,可以在屏幕上打印一个正方形 g.fillRect(X,Y,squareSize,squareSize); 要得到我正在使用的正方形大小 int squareSize = (400/gridsize)-1; 其中gridsize可以是3-200之间的任意数字 然而,如果我超过130,squareSize总是1。有一个版本的 g.fillRect 使用双精度值而不是整数值的 因为如果它在130以上的任何值上四舍五入为1,那么正方形的大小都是相同的,而它们的大小应该根据不同
g.fillRect(X,Y,squareSize,squareSize);
要得到我正在使用的正方形大小
int squareSize = (400/gridsize)-1;
其中gridsize
可以是3-200之间的任意数字
然而,如果我超过130,squareSize
总是1。有一个版本的
g.fillRect
使用双精度值而不是整数值的
因为如果它在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);
无论如何,如果您试图以亚像素精度绘制,则需要启用渲染提示。VALUE\u STROKE\u PURE。您可以这样启用它
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
你如何想象双坐标代表一个像素?啊,好吧,我想我现在明白了…你可以看看
java.awt.Rectangle2D
为什么这个答案还不被接受?它就像一个符咒=)