NSRect против CoreGraphics

У меня есть общий вопрос относительно рисования довольно простых фигур в NSView, Есть ли "правило", когда использовать NSRect структуракласса (drawrect) по сравнению с использованием CoreGraphics фреймворк? То, что я понял до сих пор, я мог использовать любой из них для моего приложения OSX. Могу я?

1 ответ

Решение

Во-первых, нет NSRect класс (это структура), вы имеете в виду NSView метод drawRect:, Вообще говоря, платформа Core Graphics является "более низким уровнем", чем методы рисования AppKit, которые обычно являются просто "обертками" вокруг Core Graphics. Это также простой C вместо Objective-C, поэтому AppKit обычно немного проще в использовании, но вы можете свободно смешивать и сопоставлять их.

Например:

- (void)drawRect:(NSRect)rect
{
    //This uses AppKit:
    [[NSColor redColor] set];
    [[NSBezierPath bezierPathWithOvalInRect:[self bounds]] fill];

    //This does the same, using Core Graphics:
    CGContextRef ctx = [[NSGraphicsContext currentContext] graphicsPort];
    CGContextSetRGBFillColor(ctx, 1.0, 0.0, 0.0, 1.0);
    CGContextFillEllipseInRect(ctx, NSRectToCGRect([self bounds]));
}
Другие вопросы по тегам