更改CGContext的背景颜色



我对处理CGContexts真的很陌生,我只是想通过遵循一个简单的触摸绘制&草图教程(http://blog.effectiveui.com/?p=8105)

不过,当涉及到更改CGContext的背景颜色时,我遇到了一堵砖墙。

我正在启动这样的上下文:

 - (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);

但当我尝试使用CCD_ 1将背景颜色从黑色更改为黑色时(无论是在初始化中还是在绘图/笔划设置部分中),都没有效果。

有人能给我指一个正确的方向,一个更好/正确的地方打电话,或者正确的电话吗?非常感谢您抽出时间!

不能只设置颜色并期望上下文填充新颜色。实际上,您需要将该颜色绘制到上下文中。在init方法中,设置填充颜色后,尝试使用类似的东西

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

与此相关的是,上下文默认情况下没有黑色。它们的颜色是透明的。现在,如果上下文没有alpha通道,那么它最终会变成黑色,但如果上下文确实有alpha通道,并且你看到的是黑色,那是因为你在黑色的东西上渲染输出(或者,你把透明图像放在一个opaque标志设置为true的层中,CoreAnimation最终在黑色的上面绘制它)。

最新更新