Xamarin IOS - поворот изображения (UIImage) на 180 градусов вокруг центральной точки - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь повернуть UIImage на 180 градусов вокруг своей центральной точки, используя CGAffineTransform, но он не работает так, как я хочу: /

Код:

    UIImage RotateImage(UIImage imageIn) {
    int kMaxResolution = 2048;

    CGImage imgRef = imageIn.CGImage;
    float width = imgRef.Width;
    float height = imgRef.Height;
    CGAffineTransform transform = CGAffineTransform.MakeIdentity ();
    RectangleF bounds = new RectangleF( 0, 0, width, height );

    if ( width > kMaxResolution || height > kMaxResolution )
    {
        float ratio = width/height;

        if (ratio > 1)
        {
            bounds.Width  = kMaxResolution;
            bounds.Height = bounds.Width / ratio;
        }
        else
        {
            bounds.Height = kMaxResolution;
            bounds.Width  = bounds.Height * ratio;
        }
    }

    float scaleRatio = bounds.Width / width;
    SizeF imageSize = new SizeF( width, height);
    float boundHeight;

    //This piece of code should make this UImage upside down            
    transform = CGAffineTransform.MakeTranslation (imageSize.Width, imageSize.Height);
    transform = CGAffineTransform.Rotate(transform, (float)Math.PI);
    //=============

    UIGraphics.BeginImageContext(bounds.Size);

    CGContext context = UIGraphics.GetCurrentContext ();

    context.ScaleCTM(scaleRatio, -scaleRatio);
    context.TranslateCTM(0, -height);
    context.ConcatCTM(transform);
    context.DrawImage (new RectangleF (0, 0, width, height), imgRef);

    UIImage imageCopy = UIGraphics.GetImageFromCurrentImageContext ();
    UIGraphics.EndImageContext ();

    return imageCopy;
}

Изображение масштабируется после этого, но не вверх дном. Почему?

Спасибо за ваши ответы заранее.

...