AWT 绘制浮点矩形

Jos*_*osh 2 java canvas awt

在我的 AWT 画布中,我想在坐标 (0.5, 0.5) 处绘制一个矩形。不幸的是,该fillRect()方法只接受整数。我被迫强制转换我的浮点变量以使其完全运行。

正确:因为画布坐标以像素为单位,所以 0.5 无关紧要,因为您不能有半个像素。但是,当我将所有内容都缩放 50 时,我可以轻松地分辨出矩形不是我想要的位置。

如果您打算回答“为什么首先要放大所有内容?”,我想将我的物理引擎坐标转换为画布坐标。例如:世界坐标中 (1, 0) 处的实体在大小为 600x600 的画布上的画布坐标中应为 (400, 300)。这不是关键,但我非常感谢一种制作浮点矩形的方法。或者更好的方法来转换坐标。

提前致谢!

Bit*_*nja 5

您正在寻找一个java.awt.geom.Rectangle2D.Double. 这允许您在十进制坐标处绘制。

Rectangle2D.Double rect = new Rectangle2D.Double(.5, .5, 4, 6);
Run Code Online (Sandbox Code Playgroud)

在坐标为 (.5, .5) 且维度为 (4, 6) 处创建一个矩形。您应该使用Graphics2D. 以下是如何将您的Graphics g转换为Graphics2D对象然后绘制矩形:

Graphics2D g2d = (Graphics2D)g.create();
g2d.draw(rect);
Run Code Online (Sandbox Code Playgroud)