我是处理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);
从黑色(在初始或在绘图/笔划设置部分中)更改背景颜色时,没有效果。
是否有人能够指出我正确的方向或更好/正确的地方拨打该电话或使用正确的电话?非常感谢你的时间!
答案 0 :(得分:22)
您不能只设置颜色并希望上下文填充新颜色。您需要实际将颜色绘制到上下文中。在init方法中,设置填充颜色后,尝试使用
之类的东西CGContextFillRect(cacheContext, (CGRect){CGPointZero, size});
在相关说明中,默认情况下上下文没有黑色。它们具有透明的颜色。现在,如果您的上下文没有alpha通道,那么这将最终变为黑色,但如果您的上下文确实有alpha通道并且您看到黑色,那是因为您将输出呈现在黑色的顶部(或者,您可以将透明图像放入一个opaque
标志设置为true的图层中,CoreAnimation最终将其绘制在黑色顶部。)