我正在尝试在 Cocoa 中绘制我的一些 UI 元素,主要是按钮的图标,但是我很难获得我想要的那种精度。
我正在使用这样的超级简单代码来绘制矩形:
[[NSColor redColor] set];
[NSBezierPath strokeRect:myRect];
但我看到的是红色矩形线总是褪色。
我在这里想念什么?
我正在尝试在 Cocoa 中绘制我的一些 UI 元素,主要是按钮的图标,但是我很难获得我想要的那种精度。
我正在使用这样的超级简单代码来绘制矩形:
[[NSColor redColor] set];
[NSBezierPath strokeRect:myRect];
但我看到的是红色矩形线总是褪色。
我在这里想念什么?
Cocoa 坐标实际上指定了您要绘制的像素的中心。这意味着,例如,如果您想在左下角的像素上绘制,您应该使用坐标 (0.5,0.5)。
向您的坐标添加/减去半个像素,它们应该是像素完美的。
您可以像这样为图形上下文禁用抗锯齿:
[[NSGraphicsContext currentContext] setShouldAntialias:NO];
或者您可以使用 NSFrameRect 而不是贝塞尔路径,这将获得您想要的精度,同时保持抗锯齿:
NSFrameRect(myRect);