2012-01-29 66 views
2

在IOS下我想通过绘制到通过CGBitmapContextCreate创建的上下文来创建一个图像。以下是我使用的代码(类似于我发现的一些示例),但是当我调用它时,没有任何内容被绘制。请注意,此示例中的“上下文”是通过调用UIGraphicsGetCurrentContext获得的,我可以成功地将其他内容绘制到此上下文中。有什么我失踪了吗?无法绘制使用CGBitmapContextCreate创建的图像

感谢

CGContextRef bmContext; 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

    bmContext = CGBitmapContextCreate(nil, 200, 200, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast); 

    CGFloat Color[4] = {  
     (CGFloat) 1, 
     (CGFloat) 0, 
     (CGFloat) 0, 
     (CGFloat) 1 }; 
    CGRect Rect = { { 0, 0 }, { 200, 200 } }; 

    CGContextSetFillColor(bmContext, Color); 
    CGContextFillRect (bmContext, Rect); 

    CGImageRef image = CGBitmapContextCreateImage(bmContext); 

    CGContextDrawImage(context, CGRectMake(100, 100, 200, 200), image); 

    CGImageRelease(image); 
    CGContextRelease(bmContext); 
    CFRelease(colorSpace); 
+0

如何获得'context'? – Till 2012-01-29 02:01:35

+0

此代码在哪里出现?在drawRect中?有没有setNeedsDisplay任何地方?是的,“背景”来自哪里?你的意思是“bmContext”吗? – 2012-01-29 02:05:12

+0

是的,这是从一个drawRect中调用的,正如我所说的,“上下文”来自对UIGraphicsGetCurrentContext的调用,并且可以成功用于绘制其他内容。 – 2012-01-29 02:21:55

回答

1

多次实验后,我已经发现了这个问题。看来,我需要调用:

CGContextSetFillColorSpace(bmContext, colorSpace); 

否则它似乎是一个灰度上下文,并且当我设置填充颜色,强度和α期待只有2值。这意味着在我上面的示例中,alpha总是零,导致没有任何东西被绘制。将上下文设置为RGB色彩空间可解决该问题。

感谢所有花时间看我的问题。