0
画像を回転して保存すると画像が保存されるときに動作しますが、画像を回転しようとすると回転は行われますが画像は空白になります。ここでXamarin UIImage rotation
public UIImage RotateImage (UIImage originalImage, int rotationAngle)
{
UIImage rotatedImage = originalImage;
if (rotationAngle > 0) {
CGSize rotatedSize;
float angle = Convert.ToSingle ((Math.PI/180) * rotationAngle);
using (UIView rotatedViewBox = new UIView (new CGRect (0, 0, originalImage.Size.Width, originalImage.Size.Height))) {
CGAffineTransform t = CGAffineTransform.MakeRotation (angle);
rotatedViewBox.Transform = t;
rotatedSize = rotatedViewBox.Frame.Size;
UIGraphics.BeginImageContext (rotatedSize);
CGContext context = UIGraphics.GetCurrentContext();
context.TranslateCTM (rotatedSize.Width/2, rotatedSize.Height/2);
context.RotateCTM (angle);
context.ScaleCTM ((nfloat)1.0, -(nfloat)1.0);
context.DrawImage (new CGRect (-originalImage.Size.Width/2, -originalImage.Size.Height/2, originalImage.Size.Width, originalImage.Size.Height), originalImage.CGImage);
rotatedImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
}
}
return rotatedImage;
}
は私が得るものです:
とオリジナル画像:
更新:小さなコード変更
画像と作成されたコンテキストとの間に関係が定義されていないため、画像は空白だと思います。 – NeverHopeless
あなたがコード(コメント)で見ることができるように、私はcontext.DrawImageによって私たちをリンクしようとしますが、成功しません。それから、私はoriginalImageで試してみましょう。 – Leze
あなたはあなたが持っている問題を明確にすることは親切でしょうか?共有したコードはイメージを回転させるだけで、テストアプリケーションでチェックしました。 'using()'の中で 'UIGraphics.BeginImageContext(rotatedSize)'を使うことを提案します。 –