我是处理 CGContext 的新手,我只是想通过简单的触摸绘画和素描教程 (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); 将背景颜色从黑色更改(在初始化或绘图/描边设置部分)时;
没有影响。
有没有人能为我指出正确的方向,让我找到更好/正确的地方来调用电话,或者使用正确的电话?非常感谢您的宝贵时间!
最佳答案
您不能只设置颜色并期望上下文填充新颜色。您需要实际绘制该颜色到上下文中。在初始化方法中,设置填充颜色后,尝试使用类似
CGContextFillRect(cacheContext, (CGRect){CGPointZero, size});
在相关说明中,默认情况下上下文没有黑色。它们具有透明的颜色。现在,如果你的上下文没有 alpha channel ,那么它最终会变成黑色,但如果你的上下文确实有 alpha channel 并且你看到黑色,那是因为你在黑色的东西上渲染输出(或者,您将透明图像放入 opaque
标志设置为 true 的层中,CoreAnimation 最终将其绘制在黑色之上)。
关于iphone - 更改 CGContext 的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980889/