1

この方法で BMP イメージをロードすると、次のようになります。

NSData * pImageData = [[NSData alloc] initWithBytesNoCopy:pBuffer length:dwSize freeWhenDone:NO];
UIImage * pLoaded = [[UIImage alloc] initWithData:pImageData];
[pImageData release];

その画像を Quartz2D で表示してみます:

CGImageRef cgImage = [pLoaded CGImage];
CGContextSaveGState(context);
CGContextTranslateCTM(context, x, y*2 + h);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGRectMake(x, y, w, h), cgImage);
CGContextRestoreGState(context);

画像が黒い四角形として表示されるか、表示されても完全に表示されないことがあります。initWithData の後に 1 秒間スリープすると、画像が正しく表示されます。

画像の初期化が完了するのを待つ UIKit/Quartz2D API メソッドはありますか?

4

2 に答える 2

0

@synchronizationまたはキューを使用dispatchして、イメージのダウンロードが完了するまで待つことができます。

于 2012-07-09T17:41:43.283 に答える
0

私が使用するとすべてが機能します:

NSData * pImageData = [[NSData alloc] initWithBytes:pBuffer length:dwSize];

それ以外の:

NSData * pImageData = [[NSData alloc] initWithBytesNoCopy:pBuffer length:dwSize freeWhenDone:NO];

phix23 に感謝します。

于 2012-07-10T08:55:33.450 に答える