public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) { StartDrawing(); var rect = TranslateView(new System.Drawing.RectangleF(x, y, width, height), true); pen.Apply(this); var yscale = rect.Height / rect.Width; var centerY = RectangleFExtensions.GetMidY(rect); var centerX = RectangleFExtensions.GetMidX(rect); Control.ConcatCTM(new CGAffineTransform(1.0f, 0, 0, yscale, 0, centerY - centerY * yscale)); Control.AddArc(centerX, centerY, rect.Width / 2, Conversions.DegreesToRadians(startAngle), Conversions.DegreesToRadians(startAngle + sweepAngle), sweepAngle < 0); Control.StrokePath(); EndDrawing(); }