Как получить идеальный рисунок с какао - PullRequest
3 голосов
/ 10 февраля 2011

Я пытаюсь нарисовать некоторые из своих элементов пользовательского интерфейса в Какао, в основном иконки для кнопок, но мне очень трудно получить ту точность, которая мне нужна.

Я использую очень простой код, подобный этому, для рисования прямоугольников:

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

Но я вижу, что красная прямоугольная линия всегда блеклая.

Что мне здесь не хватает?

Ответы [ 2 ]

8 голосов
/ 10 февраля 2011

Координаты Какао фактически указывают центр пикселя, который вы хотите нарисовать. Это означает, например, что если вы хотите нарисовать нижний левый пиксель, вы должны использовать координаты (0.5,0.5).

Добавить / вычесть половину пикселя из ваших координат, и они должны быть идеальными.

0 голосов
/ 10 февраля 2011

Вы можете отключить сглаживание для своего графического контекста следующим образом:

[[NSGraphicsContext currentContext] setShouldAntialias:NO];

Или вы можете использовать NSFrameRect вместо пути Безье, и это получит необходимую точность, сохраняя при этом сглаживание:

NSFrameRect(myRect);
...