更改CGContext的背景颜色

时间:2012-01-24 01:08:02

标签: iphone objective-c background paint cgcontext

我是处理CGContexts的新手,我只是想通过简单的触摸油漆来解决问题。草图教程(http://blog.effectiveui.com/?p=8105)

当我改变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);

但是当我尝试使用CGContextSetRGBFillColor(cacheContext, 1, 1, 1, 1);从黑色(在初始或在绘图/笔划设置部分中)更改背景颜色时,没有效果。

是否有人能够指出我正确的方向或更好/正确的地方拨打该电话或使用正确的电话?非常感谢你的时间!

1 个答案:

答案 0 :(得分:22)

您不能只设置颜色并希望上下文填充新颜色。您需要实际颜色绘制到上下文中。在init方法中,设置填充颜色后,尝试使用

之类的东西
CGContextFillRect(cacheContext, (CGRect){CGPointZero, size});

在相关说明中,默认情况下上下文没有黑色。它们具有透明的颜色。现在,如果您的上下文没有alpha通道,那么这将最终变为黑色,但如果您的上下文确实有alpha通道并且您看到黑色,那是因为您将输出呈现在黑色的顶部(或者,您可以将透明图像放入一个opaque标志设置为true的图层中,CoreAnimation最终将其绘制在黑色顶部。)

相关问题