Основано на ответе BahaiResearch.com . Я сделал другой метод для неквадратных изображений и округлости в процентах вместо литерального радиуса.
Я не уверен, правильно ли он выдает многоточие. Поэтому я буду признателен, если кто-нибудь сможет протестировать или даже улучшить этот метод.
private static UIImage RoundCorners (UIImage image, float roundnessPercentage)
{
float width = image.Size.Width;
float height = image.Size.Height;
float radius = ((width+height)/2) * (roundnessPercentage/(100*2));
UIGraphics.BeginImageContext (new SizeF (width, height));
CGContext c = UIGraphics.GetCurrentContext();
c.BeginPath ();
c.MoveTo(width, height/2);
//Bottom-right Corner
c.AddArcToPoint(width, height, height / 2, width, radius);
//Bottom-left Corner
c.AddArcToPoint(0, height, 0, 0, radius);
//Top-left Corner
c.AddArcToPoint(0, 0, width/2, 0, radius);
//Top-right Corner
c.AddArcToPoint(width, 0, width, height/2, radius);
c.ClosePath();
c.Clip();
image.Draw (new PointF (0, 0));
UIImage converted = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext ();
return converted;
}