Swing绘制不正确的坐标

时间:2011-03-07 21:12:19

标签: 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)。有谁知道问题可能是什么?毋庸置疑,因为我无法看清数学中的错误,所以非常令人沮丧。

2 个答案:

答案 0 :(得分:3)

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

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

获得正确的缩放行为。

答案 1 :(得分:1)

我认为这是由于比率初始化的方式:你做了一个int除法,所以结果是int,而不是double。将其中一个值转换为double以获得双重结果。