2013-03-19 3 views
0

NSView에 간단한 모양을 그리는 것과 관련하여 일반적인 질문이 있습니다. NSRect 클래스 struct (drawrect) 대 CoreGraphics 프레임 워크를 사용할 때 "규칙"이 있습니까? 지금까지 내가 osx 응용 프로그램에 사용할 수있는 것으로 이해했습니다. 그럴 수있어?NSRect 대 CoreGraphics

답변

2

우선, 아니 NSRect클래스 (이 구조체의), 당신은 NSView 방법 drawRect:를 참조하고이 없다. 일반적으로 Core Graphics 프레임 워크는 AppKit 드로잉 메서드보다 "하위 수준"이며 Core Graphics 주변의 "래퍼"입니다. Objective-C가 아닌 일반 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])); 
} 
+0

안녕하세요 OMZ는 대답 주셔서 감사합니다. 이 두 가지 방법 중 하나에서 품질에 단점이 없다고 가정합니다. 맞습니까? – JFS

+0

아니요, 두건 아래에서, 그들은 거의 똑같은 일을합니다. – omz