Java GraphicsContext为什么使用具有双参数的方法?

Java GraphicsContext为什么使用具有双参数的方法?,java,swing,javafx,int,double,Java,Swing,Javafx,Int,Double,我正在从swing迁移到javafx。我想知道为什么GraphicsContext使用带有双参数的方法。例如fillRect(double x,double y,double w,double h)不同于swing的方法drawrrect(int x,int y,int width,int height) 我应该用double进行所有计算吗?drawRect在继承自Graphics中,它使用int指定字数和大小 另一方面,Graphics2D对象能够处理“在整个像素之间”的图形值。为了进行补偿,

我正在从swing迁移到javafx。我想知道为什么GraphicsContext使用带有双参数的方法。例如
fillRect(double x,double y,double w,double h)
不同于swing的方法
drawrrect(int x,int y,int width,int height)


我应该用double进行所有计算吗?

drawRect
在继承自
Graphics
中,它使用
int
指定字数和大小

另一方面,
Graphics2D
对象能够处理“在整个像素之间”的图形值。为了进行补偿,它通常会在渲染部分渲染抖动像素(图形和BG颜色之间的一部分),其中必须处理像素的分数

我应该把所有的计算都加倍吗


对!!完全等于整数的双精度值将按照您从
Graphics
方法中所期望的那样呈现-具有清晰的线条。但是,如果形状的边界位于整个像素之间,颜色将抖动。

最初的图形类集中在屏幕上,Graphics2D设计用于更高精度的输出,就像打印机(以及会说话的商业打印机)谢谢您的回答。所以,如果我需要用清晰的边框来绘制一些对象,我应该使用int参数,在另一种情况下是double“所以如果我需要用清晰的边框来绘制一些对象,我应该使用int参数”,我不会说它这么简单。例如,与正方形不同,正方形的每一条边都是垂直或水平的,想象一个菱形。如果菱形的每个点都是整数值,则无关紧要,一个点和下一个点之间的大多数值都不是整数值。因此,图形对象必须在绘制锯齿线和像素抖动之间做出选择。但最简单的答案是:-使用双精度将产生更好的绘图。