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;

}

だから私はコンテキストで画面外の描画をレンダリングしてからそれを取得しようとしていますCGImageRefが、何らかの理由でコンテキストは常に NULL であり、画像出力を読み取るとアプリがクラッシュします。

誰かがここで何が起こっているのかを説明できますか、および/またはこれが機能する例を教えてください.

4

1 に答える 1

0

コンテキストが null である理由がわかりません。幅と高さが悪い可能性があります。

しかし...

  1. 使用する前にビットマップを解放しています!
  2. 作成した色空間を解放することはできません。

CGBitmapContextCreateQuartz 2D Programming Guide に使用例があります。

于 2012-11-27T20:26:04.197 に答える