4

iPad用のiOS 6アプリを開発しています。を回転させるコードをいくつか開発しましたUIImage。正方形の画像ではうまく機能しますが、画像が正方形でない場合はトリミングされるため、画像の一部 (正方形) しか表示されません。

私のコード:

UIGraphicsBeginImageContext(image.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextTranslateCTM( context, 0.5f * image.size.width, 0.5f * image.size.height ) ;
CGContextRotateCTM( context, -1.5707963267949) ;

[image drawInRect:(CGRect){ { -imatgetemporal.size.width * 0.5f, -image.size.height * 0.5f }, image.size }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();

問題は 0.5f にあると思いますが、解決方法がわかりません。私に何ができる?

4

1 に答える 1

1

回転した画像に十分な大きさのグラフィック コンテキストを作成する必要があります。image.size を使用していますが、回転したサイズを UIGraphicsBeginImageContext の引数として使用する必要があります。さらに、 drawInRect への引数が正しくありません。最終イメージの y 原点を決定する (回転した) 原点 x を次の方法でオフセットする必要があります。最終的な画像の高さである元の幅全体を「下」にします。

const CGSize imageSize = image.size;
UIGraphicsBeginImageContext(CGSizeMake(imageSize.height, imageSize.width));

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.5f * imageSize.width, 0.5f * imageSize.height ) ;
CGContextRotateCTM(context, -1.5707963267949) ;
[image drawInRect:(CGRect){ { imageSize.height * 0.5 - imageSize.width, -imageSize.width * 0.5f }, imageSize }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
于 2013-03-15T06:30:25.883 に答える