在最近的 iOS techtalk 中,我听到了一个关于“确保你的绘制操作是像素对齐的”的建议。
这是对 Mac/iOS 绘图性能的有效建议吗?
另一个问题是如何确定我的代码是以像素对齐的方式绘制的?
有什么工具或技巧可以提供帮助吗?
在最近的 iOS techtalk 中,我听到了一个关于“确保你的绘制操作是像素对齐的”的建议。
这是对 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:
生成“ ..backing 在窗口坐标中存储像素对齐的矩形。 ”。