win*_*nck 6 macos cocoa core-graphics objective-c quartz-2d
获取NSView的CGContext -drawRect:
并使用它以后执行更多绘图是否安全?在像这样的简单测试中:
CGContextRef context = NULL;
- (void)drawRect:(NSRect)r
{
if (!context)
context = [[NSGraphicsContext currentContext] graphicsPort];
}
- (void)drawSomething
{
CGContextSetRGBFillColor(context, 1, 0, 0, 1);
CGContextFillRect(context, CGRectMake (0, 0, 100, 100));
CGContextFlush(context);
}
Run Code Online (Sandbox Code Playgroud)
-drawSomething
调用时似乎一切正常,但它是否保证上下文不会改变?
你可以看到并猜测,我试图绕过标准的绘图方式-drawRect:
.它适用于无数场合,但是在我的特定情况下,更加程序化的绘图方式会让生活变得更轻松.
你不应该这样做.上下文不保证存在于外部,drawRect:
并且您的绘图代码工作的事实是一个快乐的事故.不要依赖这种行为.
如果你需要在任何时候强制绘图,你应该调用display
视图,然后调用它drawRect:
.