19

オフスクリーンビットマップ(またはRGBA値の配列)にレンダリングしてからUIView、ビューのdrawRect関数でそれらをblitします。フル32ビットレンダリング(アルファチャネルを含む)を実行したいのですが、24ビットレンダリングのコンテンツでもあります。

誰かが私を正しい方向に向けて、いくつかのコードスニペットまたは関連するAPIを教えてもらえますか?

また、OpenGLを使用してこれを行う方法を正確に知っています。この作業は、CoreGraphics自体で行うことをお勧めします。

4

4 に答える 4

15

オフスクリーン コンテキストにレンダリングして CGImageRef として保存するには:

void *bitmapData = calloc(height, bytesPerLine);
CGContextRef offscreen = CGBitmapContextCreate(..., bitmapData, ...)
// draw stuff into offscreen
CGImageRef image = CGBitmapContextCreateImage(offscreen);
CFRelease(offscreen);
free(bitmapData);

画面に描画するには:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextDrawImage(context, rect, image);
}

ビューのレイヤーのコンテンツ プロパティ ( view.layer.contents = image) に画像を保存するか、UIImageView を使用することもできます。

于 2009-12-26T09:17:49.257 に答える
3

CGBitmapContextを使用できます。CGBitmapContextから画像を生成し、drawRect中に描画できます。

于 2009-01-04T04:41:39.263 に答える
2

ビットマップコンテキストが不要でCGDataProviderCreateWithData、.CGImageCreateCGImageRef

于 2009-03-18T07:53:40.300 に答える