2013-01-07 30 views

回答

5

浮动的原因在于现代CPU和GPU a经过优化,可以并行处理许多浮点数。 iOS和Mac都是如此。

使用Quartz,您不需要提供单个像素,但是您绘制的所有内容始终都是反锯齿。如果坐标为1.0,1.0,则实际上会在坐标原点的2x2像素上添加颜色。

这就是为什么你可能会得到模糊的线条,如果你在整数坐标绘制。在非视网膜上,你需要以0.5抵消。从技术上讲,您需要抵消0.25以在Retina显示屏上绘制精确的像素。虽然这并不重要,因为在像素尺寸上你不会再看到它。长话短说:你不直接寻址像素,但图形引擎会为浮点坐标和像素之间的映射。

1

尺寸实际上是在非视网膜屏幕上与像素具有1对1关系的点,但对于视网膜屏幕1点= 2像素。所以在视网膜屏幕上,你实际上可以增加半个点。

+0

那真的没有回答这个问题,这个浮点语法是在视网膜前。 –

+0

这个因素又如何进入'决议独立性' –

+1

我认为这是对未来的证明。也许将来1点可能等于4个像素。所以100.25的维数是有意义的。 –

4

决议独立性。

你想保持你的UI的数学表示尽可能准确,只有当你真正需要绘制到输出设备时(甚至不是真的)才能转换为像素int值。这样就可以将任意数量的转换应用于您的视图,并仍然可以得到准确的结果。

此外,可以渲染线条,例如半像素宽度,甚至更少的可见结果 - 系统使用智能抗锯齿来显示细线。

这与矢量图几十年来一直使用的原理相同(Adobe的PostScript,SVG等)。事实上,Quartz基于PDF,这是PostScript的现代版本。 NeXT使用Display PostScript的时候,它被认为是非常革命性的。