在最近的iOS技術中,我聽到了一個關於「確保您的繪圖操作是像素對齊」的建議。如何確保繪圖操作在Mac上與像素對齊?
這是一個有效的Mac/iOS繪圖性能建議嗎?
另一個問題是我如何確定我的代碼是與像素對齊繪製?
有什麼工具或竅門可以幫助嗎?
在最近的iOS技術中,我聽到了一個關於「確保您的繪圖操作是像素對齊」的建議。如何確保繪圖操作在Mac上與像素對齊?
這是一個有效的Mac/iOS繪圖性能建議嗎?
另一個問題是我如何確定我的代碼是與像素對齊繪製?
有什麼工具或竅門可以幫助嗎?
像素對齊與性能沒有任何關係,但與渲染圖形的質量有關。
來解釋它,最好的辦法是顯示的代碼一點點:
//Assume this is drawing in a rect such as a button or other NSView
NSBezierPath *line = [NSBezierPath bezierPath];
[line moveToPoint:NSMakePoint(0,0)];
[line lineToPoint:NSMakePoint(200,0)];
[[NSColor redColor] set];
[line stroke];
如果你嘗試這個代碼,你會看到一條紅線。如果仔細觀察,線條不會非常尖銳 - 紅色將被清除,寬度看起來像是大約2個像素寬。這是因爲在Cocoa中使用點而不是像素。結果是該線正在兩個像素之間繪製。 (欲瞭解更多信息,請通過在文檔可可拉出引導閱讀。)
現在,如果我們做一些簡單的改變......
//Assume this is drawing in a rect such as a button or other NSView
NSBezierPath *line = [NSBezierPath bezierPath];
[line moveToPoint:NSMakePoint(0,0.5)];
[line lineToPoint:NSMakePoint(200,0.5)];
[[NSColor redColor] set];
[line stroke];
執行該代碼,你會看到你的輸出可能最初是有意的
有很多可以說這個,但基本上抵消你的積分0.5,你應該沒問題。
對於OS X 10.7+,您還希望使用backingAlignedRect:options:
在窗口座標中生成「..後備存儲像素對齊的矩形。」「。
聲明所涉及的繪圖技術是什麼? – justin 2011-02-18 05:33:28
通過繪製性能我指的是Cocoa繪圖API,Quartz繪圖API,Core Animation API(基本上我們用來開發應用程序UI的所有東西,不包括的技術,例如:openGL)。 – Jonny 2011-02-28 05:52:31