2013-01-07 32 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的時候,它被認爲是非常革命性的。