0

変換された UIImageViews から高解像度の画像を生成する際に問題が発生しています。ユーザーの指によって変換されたいくつかのビューを含むキャンバス ビューがあります。そのため、それらの変換に基づいて、これらのビューの画像をレンダリングしようとします。ビューに使用するコード スナップを次に示します。

CGSize canvasSize = CGSizeMake(HIRES_WIDTH, HIRES_WIDTH);
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(HIRES_WIDTH / canvasView.frame.size.width, HIRES_WIDTH / canvasView.frame.size.width);

UIGraphicsBeginImageContext(canvasSize);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSaveGState(context);
CGPoint center = imageView.center;
CGSize size = imageView.bounds.size;
CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height);

CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, size.width / 2, size.height / 2);
transform = CGAffineTransformConcat(transform, photoImageView.transform);
transform = CGAffineTransformConcat(transform, scaleTransform);
CGContextConcatCTM(context, transform);

[photoImageView.image drawInRect:frame];

CGContextRestoreGState(context);

UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

しかし、最終的な画像でオフセットの違いが生じています。アドバイスをいただければ幸いです。

ありがとう。

4

1 に答える 1

0

これを変更してみてください:

CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height);

これに:

CGRect frame = CGRectMake(center.x - size.width / 2, center.y - size.height / 2, size.width, size.height);
于 2013-03-28T17:30:39.380 に答える