无法绘制使用CGBitmapContextCreate创建的图像

时间:2012-01-29 01:46:06

标签: ios core-graphics

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

由于

    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);

1 个答案:

答案 0 :(得分:1)

经过多次实验,我发现了问题。看来我需要打电话:

CGContextSetFillColorSpace(bmContext, colorSpace);

否则它似乎是灰度上下文,并且在设置填充颜色,强度和alpha时仅期望2个值。这意味着在上面的例子中,alpha总是为零,导致没有被绘制。将上下文设置为RGB颜色空间可以解决问题。

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