如何使用可可获得像素完美的绘图

时间:2011-02-10 11:22:01

标签: cocoa drawing nsbezierpath

我正在尝试在Cocoa中绘制一些我的UI元素,主要是按钮的图标,但是我很难获得我想要的那种精度。

我正在使用这样的超级简单代码来绘制矩形:

[[NSColor redColor] set];
[NSBezierPath strokeRect:myRect];

但我所看到的是红色矩形线总是褪色。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:8)

Cocoa坐标实际上指定了您想要绘制的像素的中心。这意味着,例如,如果要在左下角像素上绘制,则应使用坐标(0.5,0.5)。

在坐标上添加/减去半个像素,它们应该是像素完美的。

答案 1 :(得分:0)

您可以为图形上下文禁用抗锯齿,如下所示:

[[NSGraphicsContext currentContext] setShouldAntialias:NO];

或者您可以使用NSFrameRect而不是bezier路径,这样可以获得所需的精度,同时保持抗锯齿效果:

NSFrameRect(myRect);