CGContextRef没有被创建

时间:2012-11-27 18:26:14

标签: objective-c ios cocoa-touch core-graphics quartz-2d

-(CGImageRef)drawing{

CGContextRef    context;
GLubyte         *bitmapData;
size_t          width, height;

width=super.size.width;
height=super.size.height;

bitmapData = (GLubyte *) calloc(width * height * 4, sizeof(GLubyte));

context = CGBitmapContextCreate(bitmapData, width, height, 8, width * 4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);

if (context==NULL){
    NSLog(@"context not created?!   (o_*) ");
}

free(bitmapData);


CGContextSetRGBFillColor (context, 1, 0, 0, 1);
CGContextFillRect (context, CGRectMake (0, 0, 200, 100 ));
CGContextSetRGBFillColor (context, 0, 0, 1, .5);
CGContextFillRect (context, CGRectMake (0, 0, 100, 200 ));




CGImageRef myImage = CGBitmapContextCreateImage (context);

CGContextRelease(context);

return myImage;

}

所以我试图在上下文中渲染一个绘图屏幕,然后将其作为CGImageRef获取,但由于某种原因,上下文始终为NULL,当我读取图像输出时应用程序崩溃。

有人可以解释这里发生的事情和/或指出一个有效的例子。

1 个答案:

答案 0 :(得分:0)

我不知道为什么上下文为空 - 宽度&身高可能不好。

但是......

  1. 您在使用之前释放了位图!
  2. 您无法释放您创建的色彩空间。
  3. 在Quartz 2D Programming Guide中有一个使用CGBitmapContextCreate的例子。