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]));
}