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
Как вы можете видеть в коде (прокомментировано), я пытаюсь связать нас контекстом.DrawImage, но без успеха. Затем я пытаюсь использовать originalImage.Draw, но опять пустое изображение. – Leze
Не могли бы вы прояснить проблему, которая у вас есть? Код, который вы поделили, очень хорошо меняет изображение, я проверил его с помощью своего тестового приложения. Я также предлагаю использовать 'UIGraphics.BeginImageContext (rotatedSize)' внутри 'using()'. –