2

在最近的 iOS techtalk 中,我听到了一个关于“确保你的绘制操作是像素对齐的”的建议。

这是对 Mac/iOS 绘图性能的有效建议吗?

另一个问题是如何确定我的代码是以像素对齐的方式绘制的?
有什么工具或技巧可以提供帮助吗?

4

2 回答 2

8

像素对齐与性能无关,但与渲染图形的质量有关。

解释它的最好方法是显示一点代码:

//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,你应该没问题。

于 2011-02-18T00:06:43.873 回答
3

在 OS X 10.7+ 中,您还希望用于backingAlignedRect:options:生成“ ..backing 在窗口坐标中存储像素对齐的矩形。 ”。

于 2014-01-13T19:14:43.883 回答