在最近的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