iphone - 更改 CGContext 的背景颜色

标签 iphone objective-c background paint cgcontext

我是处理 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/

相关文章:

iphone - 我什么时候需要同时拥有 iVar 和属性(property)?

ios - 在前置摄像头 iOS Swift 中自动保存和捕捉照片

ios - 如果 scrollView 结束到达 iOS7 则崩溃

html - Safari 正在覆盖某些页面元素,例如背景颜色和文本。我该如何阻止它?

JavaScript 按钮相互冲突

ios - 如何遍历选项卡栏 Controller 中包含的每个导航 Controller

iphone - 将HTTP响应转换为字符串后,EXC_BAD_ACCESS

iphone - UITableView tableFooterView 可能会导致崩溃?

ios - 自定义阿拉伯语字体在 iOS 7 中有效,但在 iOS 6 或更早版本中无效

html - CSS 文本不正确,图片地址无效