有人可以向我解釋嗎?在Graphics2D中雙精度繪圖的目的是什麼
您不能在像素之間繪圖,那麼爲什麼我應該在繪圖時使用浮點或雙精度測量?在Oracle的文檔中寫了一些關於打印機設備的文檔,但它也不能在最小的點之間繪製。我不明白。
讓我們假設一條簡單的線。這條線的寬度爲1.3f。當它被繪製時,它會發生什麼:
- 在windows中顯示(我相信它有96 DPI)?
- 打印機300 DPI?
AFAIK Java在內部使用72 DPI。那麼數學如何?
有人可以向我解釋嗎?在Graphics2D中雙精度繪圖的目的是什麼
您不能在像素之間繪圖,那麼爲什麼我應該在繪圖時使用浮點或雙精度測量?在Oracle的文檔中寫了一些關於打印機設備的文檔,但它也不能在最小的點之間繪製。我不明白。
讓我們假設一條簡單的線。這條線的寬度爲1.3f。當它被繪製時,它會發生什麼:
AFAIK Java在內部使用72 DPI。那麼數學如何?
想到幾個用例。
以上都不會排除使用單精度浮點數,事實上大多數G2D操作也可以使用浮點數。使用雙精度對於真正的大型縮放比例非常重要,在精度和類似應用方面的要求非常高。但另一方面,在任何情況下,大多數計算都是在雙精度上執行的,並且儘可能通過圖形管道承擔這些計算的開銷通常可以忽略不計。所以當你問我爲什麼要使用double而不是float時,我問你「爲什麼不?」
好的,但是當我使用整數精度繪製半徑爲5的圓時,在DPI爲300的打印機上繪製它的上下文有什麼問題?它只是乘以300/72,不是嗎?所以它會是20,8333333 => 21。 – Behnil
誰說一個單位對應一個像素? 'Graphics2D'包含一個任意的'AffineTransform'轉換,可以按照您喜歡的任何因素來縮放值。 –
是的,但我也可以縮放整數值。 – Behnil
是的,但像'0.1'這樣的值可以擴展到'5.0',那麼它的初始值是否在整數之間並不重要;他們現在擴大到全像素。 –