public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) { StartDrawing(); var rect = TranslateView(new CGRect(x, y, width, height), true); pen.Apply(this); var yscale = rect.Height / rect.Width; var centerY = rect.GetMidY(); var centerX = rect.GetMidX(); 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(); }
public void FillPie(Brush brush, 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, true); brush.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.MoveTo(centerX, centerY); Control.AddArc(centerX, centerY, rect.Width / 2, Conversions.DegreesToRadians(startAngle), Conversions.DegreesToRadians(startAngle + sweepAngle), sweepAngle < 0); Control.AddLineToPoint(centerX, centerY); Control.ClosePath(); Control.FillPath(); EndDrawing(); }
public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) { SetOffset(true); StartDrawing(); var rect = new CGRect(x, y, width, height); pen.Apply(this); var yscale = rect.Height / rect.Width; var centerY = rect.GetMidY(); var centerX = rect.GetMidX(); Control.SaveState(); // save so the drawing of the pen isn't affected by the transform Control.ConcatCTM(new CGAffineTransform(1.0f, 0, 0, yscale, 0, centerY - centerY * yscale)); Control.AddArc(centerX, centerY, rect.Width / 2, CGConversions.DegreesToRadians(startAngle), CGConversions.DegreesToRadians(startAngle + sweepAngle), sweepAngle < 0); Control.RestoreState(); pen.Finish(this); EndDrawing(); }
public void FillPie(Brush brush, float x, float y, float width, float height, float startAngle, float sweepAngle) { SetOffset(true); StartDrawing(); var rect = new CGRect(x, y, width, height); Control.SaveState(); // save so the drawing of the brush isn't affected by the transform var yscale = rect.Height / rect.Width; var centerY = rect.GetMidY(); var centerX = rect.GetMidX(); Control.ConcatCTM(new CGAffineTransform(1.0f, 0, 0, yscale, 0, centerY - centerY * yscale)); Control.MoveTo(centerX, centerY); Control.AddArc(centerX, centerY, rect.Width / 2, CGConversions.DegreesToRadians(startAngle), CGConversions.DegreesToRadians(startAngle + sweepAngle), sweepAngle < 0); Control.AddLineToPoint(centerX, centerY); Control.ClosePath(); Control.RestoreState(); brush.Draw(this, false, FillMode.Winding); EndDrawing(); }
public void AddArc(float x, float y, float width, float height, float startAngle, float sweepAngle) { Control.AddArc(x, y, width, height, startAngle, sweepAngle); }