0

今天我需要通过使用双精度或浮点数来定位元素,从而在屏幕上可视化一个大型数据集。使用像素时,我可以使用以下代码简单地绘制一个矩形:

gimg.draw(new Rectangle2D.Double(1, 1, 50, 50));

但是当我尝试使用以下代码绘制两个矩形时,会出现问题。

gimg.setColor(Color.white);
gimg.draw(new Rectangle2D.Double(1.0, 1.0, 50, 50));
gimg.setColor(Color.gray);
gimg.draw(new Rectangle2D.Double(1.1, 1.1, 50.1, 50.1));

这两个矩形是相互重叠的,换句话说,你看不到一个白色和一个灰色的矩形,因为灰色的矩形被绘制在白色的矩形上。

我使用的是 0.1 增量。经过一些测试后,我似乎能够在使用 0.5 增量时查看部分矩形。这里的问题只是我还需要使位置仅相差 0.01 的矩形可见。

我怀疑我在这里遗漏了一些非常重要的东西。任何人都可以向我伸出援助之手吗?

4

2 回答 2

4

您应该考虑使用 0.1 : 1 比例,因为像素不能分成十分之一(或任何分数)而不会失去准确性/可呈现性。想象一下你屏幕上的小像素——你试图将一条 1px 的线分成 10 个可区分的部分。不幸的是,这是不可能的。

于 2012-08-27T19:45:01.163 回答
1

虽然您不能将像素“拆分”成分数,但您可以使用跨越 2 个像素的“模糊”线条绘制矩形。(不幸的是,这将使用比您现在使用的更复杂的代码。)但是,在这种情况下,我认为您需要退后一步,考虑您正在使用的数据的特征以及类型这意味着您希望人们从该数据中提取。

即使可以在屏幕上以微米精度定位矩形,您的用户也无法更好地辨别数据背后的含义,因为这个矩形比那个矩形更向右 0.0001 毫米。

也许您需要找到比位于屏幕上不同位置的矩形更好的可视化效果。也许您可以利用不同的颜色或颜色强度来传达数据的某些方面。如果不确切知道你在做什么,就不可能说更具体的东西。

于 2012-08-27T19:54:34.447 回答