我有一个关于在NSView
中绘制非常简单形状的一般问题。是否有“规则”何时使用NSRect
类结构(drawrect
)与使用CoreGraphics
框架?
到目前为止我所理解的是我可以使用其中一个用于我的osx应用程序。我可以吗?
答案 0 :(得分:2)
首先,没有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]));
}