1

私は何時間もこれに苦労してきました。アフィン変換は、私が期待しているようには見えません。

CGContextSaveGState (ctx);
float w = self.frame.size.width;
float h = self.frame.size.height;
CGContextRotateCTM (ctx, angle);
CGContextTranslateCTM (ctx, w/2, -h/2);
CGRect r = CGRectMake (0,0, w, h);
CGContextDrawImage (ctx, r, image.CGImage);
CGContextRestoreGState (ctx);

image という UIImage があります。ctx を介してアクセスできる CGImage があります。UIImage を中心からある角度だけ回転させ、CGImage の上に描画します。

回転してから平行移動すると、UIImage がうまくストレッチされません。移動してから回転すると、同じ結果になります。

これを行う方法の手がかりはありますか?ありがとうございました。

4

1 に答える 1

2

このコードは現在 iOS6 で動作しています。

画像の幅が高さよりも大きいかどうかを確認し、大きい場合は画像を時計回りに回転します。それ以外の場合は、デフォルトの動作に従ってロードされます。

- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *image = myImage;

if( image.size.width > image.size.height ) {

    UIImage *image = myImage;
    image = [UIImage imageWithCGImage:image.CGImage scale:image.scale orientation:UIImageOrientationRight];

    [bgImage setImage:image];

} else {

    [bgImage setImage:image];

}

}
于 2012-12-12T09:15:32.380 に答える