我对处理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最终在黑色的上面绘制它)。