0

谁能给我解释一下?

您不能在像素之间绘制,那么为什么在绘制时要使用浮点或双重测量?在 Oracle 的文档中写了一些关于打印机设备的内容,但它也不能在最小的点之间进行绘制。我不明白。

让我们说一条简单的线。这条线的宽度设置为 1.3f。当它被绘制时会发生什么:

  1. 在 Windows 中显示(我相信它有 96 DPI)?
  2. 300 DPI的打印机?

AFAIK Java 在内部使用 72 DPI。那么数学如何呢?

4

1 回答 1

0

我想到了几个用例。

  • 您的图形设备可能会被缩放。例如,我知道有几个应用程序使用图形上下文的适当缩放来绘制单位圆的窗口填充图像,即半径为 1 的圆。
  • 您可能正在为面向矢量的目标生成输出,例如 PDF 文件。在这种情况下,用户可能会任意放大,并且即使在高分辨率下也可能期望相当数量或精度。
  • 就像您提到的那样,打印机的打印分辨率可能比屏幕高得多,这是通过内置缩放因子来实现的,该缩放因子将默认坐标单位映射到设备像素大小的几倍。
  • 抗锯齿建议亚像素分辨率。应用于几何对象边界处给定像素的颜色量将取决于所述对象的子像素坐标。

以上都不会轻易排除使用单精度浮点数,事实上大多数 G2D 操作也可以使用浮点数。使用双精度仅对非常大的变焦、非常高的精度要求和类似应用程序很重要。但另一方面,在任何情况下,大多数计算都是在 double 上执行的,并且尽可能远地通过图形管道进行这些计算的开销通常可以忽略不计。所以当你问我为什么要使用 double 而不是 float 时,我会问你“为什么不呢?”</p>

于 2012-12-11T22:25:12.100 回答