2012-01-24 72 views
6

我真的很新来处理CGContexts,我只是试图通过简单的触摸油漆让我的脑袋周围的东西&草图教程(http://blog.effectiveui.com /?p = 8105)改变一个CGContext的背景颜色

当我改变CGContext的背景颜色时,我碰到了一堵砖墙。

我发起conext这样的:

- (BOOL) initContext:(CGSize)size { 
    int bitmapBytesPerRow; 
    bitmapBytesPerRow = (size.width * 4); 
    cacheContext = CGBitmapContextCreate (nil, size.width, size.height, 8, bitmapBytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipLast); 
    CGContextSetRGBFillColor(cacheContext, 1, 1, 1, 1); 
    return YES; 
} 

和不断变化的笔触颜色和宽度是这样的:

UIColor *color = [UIColor whiteColor]; 
CGContextSetStrokeColorWithColor(cacheContext, [color CGColor]); 
CGContextSetLineCap(cacheContext, kCGLineCapRound); 
CGContextSetLineWidth(cacheContext, 4); 

但是当我试图从黑色改变背景颜色(无论是在init或在绘图/笔划设置部分)使用CGContextSetRGBFillColor(cacheContext, 1, 1, 1, 1);没有任何效果。

任何人都可以指出我正确的方向,要么把一个更好的/正确的地方放在那个电话,要么正确的电话使用?非常感谢您的时间!

+0

可能的重复:http://stackoverflow.com/questions/2571550/how-i-set-the-background-color-in-uiview-using-cgcontext – Saphrosit

回答

22

您不能只设置颜色并期望上下文填充新颜色。你需要将绘制成那种颜色到上下文中。在init方法中,设置填充颜色后,尝试使用像

CGContextFillRect(cacheContext, (CGRect){CGPointZero, size}); 

相关提示,背景的东西没有黑色默认情况下。他们有一个透明的颜色。现在,如果你的上下文没有alpha通道,那么这最终会变成黑色,但是如果你的上下文确实有alpha通道并且你看到黑色,那是因为你将输出渲染在黑色之上(或者,您也可以将透明图像置于opaque标志设置为true并且CoreAnimation最终将其绘制在黑色之上的图层中)。

+0

这是完美的工作。非常感谢答复和清晰的解释! – DaveDee