java - Swing 绘制在不正确的坐标上

标签 java swing graphics casting geometry

我正在构建一个模拟器来协助我正在与 Uni 的一些人合作的项目。我正在用两个“玩家”(实际上是乐高机器人)制作本质上是足球场的动画。

我遇到的问题是,我用于绘图的坐标似乎是错误的,因为一切都比我想要的更靠后(在 x 和 y 中)绘制。例如,要在球场的远端绘制白线,我会这样做:

double X_RATIO = this.getSize().width / 244;
double Y_RATIO = this.getSize().height / 122;

g.fillRect((int) (243 * X_RATIO), (int) (0 * Y_RATIO), (int) (1 * X_RATIO), (int) (122 * Y_RATIO));

您可以看到,我根据当前尺寸缩放绘制的位置,因此我始终可以使用球场的标准尺寸作为我的坐标系(此处为 244 x 122)。然而,这条线是从面板右侧向后绘制至少 10 个像素(也是从底部向上大约 5 个像素)。

起初我认为这与转换有关,但我将其留到最后一秒(仅在平局阶段转换,位置无论如何都必须是 int)。有谁知道问题可能是什么?不用说这非常令人沮丧,因为我看不出我的数学有什么问题。

最佳答案

检查您的比率 X_RATIO 和 Y_RATIO,因为您在右侧使用了整数除法。您可以将其替换为

double X_RATIO = this.getSize().width / 244.0;
double Y_RATIO = this.getSize().height / 122.0;

获得正确的缩放行为。

关于java - Swing 绘制在不正确的坐标上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225312/

相关文章:

java - 在 java 中如何将一个 JPanel 添加到另一个 JPanel

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

java - JButton 监听器调用类中的方法给出 NullPointerException

java - TabLayout 中点之间的间距

java - 如何折叠JTree节点?

java - 如何使用 Java 打印自定义页面大小的文档。 (东南)

c# - 画线 : Top and Left are incorrect

matlab - 在Matlab中将阴影区域添加到plotyy

java - SpringFramework JdbcTemplate RowMapper

java - 如何在java中将json添加到http帖子的正文中