0
-(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;

}

因此,我试图在上下文中渲染屏幕外的绘图,然后将其作为 aCGImageRef但由于某种原因上下文始终为 NULL,并且当我读取图像输出时应用程序崩溃。

有人可以解释这里发生了什么和/或指出一个可行的例子。

4

1 回答 1

0

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

但...

  1. 您在使用之前释放位图!
  2. 您无法释放您创建的色彩空间。

CGBitmapContextCreateQuartz 2D Programming Guide 中有一个使用示例。

于 2012-11-27T20:26:04.197 回答