2012-03-10 100 views
0

我想使用drawInRect方法繪製NSImage的精靈。我很快注意到,通過rects傳遞的座標不是以像素爲單位,而是以點爲單位。我需要以像素級準確度來繪製我的精靈,因爲每個精靈都會說尺寸正好是73x92像素。如何用NSImage繪製一個精靈?

總之,它似乎我需要以下任何一種: 1)NSImage接受我的像素不是其他單位的矩陣。 2)從像素到NSImage單元的非常準確的轉換,使得尋址像素不會由於抗鋸齒效應而導致任何模糊。

+1

爲什麼不把每個圖像分解成單獨的圖像? – 2012-03-10 15:58:49

+1

你將不得不給我們一個例子,可能與示例圖像,你可能會受到75/72 dpi轉換造成的一些抗鋸齒... – 2012-03-10 20:21:12

+0

我與彼得。當您可以單獨加載圖像時,爲什麼要打擾精靈圖表呢?我瞭解iOS/OpenGL可以提高性能,但Mac功能非常強大,實際上很少需要使用精靈表。 – 2012-03-11 00:02:23

回答

1

NSImage沒有任何根本性的錯誤,這將使這不可能。如果您給它適當的源代碼和目標代碼,它肯定能夠以像素級別的準確度進行繪製。您必須發佈您的代碼才能在這方面提供幫助。

但是,您可能會發現處理較低級別的API更容易。 NSImage旨在處理任何看起來像圖像的東西 - 位圖,PDF等等。這種普遍性及其年齡會導致一些令人困惑的行爲。我發現使用CGImage(總是一個位圖)可以更容易預測。或者,試試NSBitmapImageRep。

+0

注意到像素每英寸與'NSImage'有關係也很重要。 'NSImage'將尊重源圖像文件的PPI並適當地繪製它。如果您的源圖像不是72ppi,那麼將使用抗鋸齒技術來繪製,如Grady Player指出的那樣。 「CGImage」和「NSBitmapImageRep」都是純粹的位圖格式,其中使用ppi沒有意義。 – 2012-03-11 01:20:15