某些Graphics2D
方法(例如drawString
)的版本采用int
或float
坐标。有没有理由选择其中一个?
同样,我应该使用较新的Shape
类,例如Rectangle2D
(使用浮点坐标),还是使用Rectangle
(将坐标定义为int
S)?
答案 0 :(得分:4)
我看到int和float -
drawString(AttributedCharacterIterator iterator, float x, float y)
Renders the text of the specified iterator, using the Graphics2D context's current Paint.
drawString(AttributedCharacterIterator iterator, int x, int y)
Renders the text of the specified iterator, using the Graphics2D context's current Paint.
如果需要更多精度,请使用float,如果位置足够则使用int。
关于您的第二个问题,请参阅以下内容,Rectangle and Rectangle2D Difference:
描述/回答Rectangle使用int坐标。 Rectangle2D是一个抽象类,如果您使用的是int,double或float坐标,则无需关心。
如果你需要更高的double和float精度,你必须使用Rectangle2D。
Rectangle2D是基类,所以如果您正在编写以抽象方式对矩形形状进行操作的代码,请转到Rectangle2D,然后像这样分配:
Rectangle2D rect = new Rectangle2D.Double(double, double, double, double);
或
Rectangle2D rect = new Rectangle(int, int, int, int)
如果你知道你只打算处理整数,你可以一直使用矩形。
你可能会说Rectangle应该被称为Rectangle2D.Integer。但那也不是,因为例如Rectangle是实现可序列化接口的三个中唯一的一个。
像skaffman评论的那样,这是一个遗留问题。