我正在尝试在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);