private void UWPFlagView_SizeChanged(object sender, SizeChangedEventArgs e) { var starSize = ActualHeight / 10; var radius = ActualHeight / 3; var count = 12; var anglesCount = 5; foreach (var star in FlagHelper.GetStars(count, (float)radius, anglesCount, (float)starSize, new Xamarin.Forms.Point(ActualWidth / 2, ActualHeight / 2))) { var points = new PointCollection(); star.Select(x => new Windows.Foundation.Point(x.X, x.Y)).Apply(x => points.Add(x)); var polygon = new Polygon(); polygon.FillRule = FillRule.Nonzero; polygon.Fill = new SolidColorBrush(Color.FromArgb(255, 247, 205, 70)); polygon.Points = points; Children.Add(polygon); } }
public override void Draw(CGRect rect) { base.Draw(rect); var starSize = Bounds.Height / 10; var radius = Bounds.Height / 3; var count = 12; var anglesCount = 5; using (CGContext context = UIGraphics.GetCurrentContext()) { UIColor.FromRGB(247, 205, 70).SetFill(); foreach (var star in FlagHelper.GetStars(count, (float)radius, anglesCount, (float)starSize, Center.ToPoint())) { var path = new CGPath(); path.AddLines(star.Select(x => x.ToPointF()).ToArray()); path.CloseSubpath(); context.AddPath(path); } context.FillPath(); } }
public override void DrawRect(CGRect dirtyRect) { base.DrawRect(dirtyRect); var starSize = Bounds.Height / 10; var radius = Bounds.Height / 3; var count = 12; var anglesCount = 5; using (CGContext context = NSGraphicsContext.CurrentContext.CGContext) { NSColor.FromRgb(247, 205, 70).SetFill(); foreach (var star in FlagHelper.GetStars(count, (float)radius, anglesCount, (float)starSize, new Xamarin.Forms.Point(Bounds.Width / 2, Bounds.Height / 2))) { var path = new CGPath(); path.AddLines(star.Select(x => x.ToPointF()).ToArray()); path.CloseSubpath(); context.AddPath(path); } context.FillPath(); } }
protected override void DispatchDraw(Canvas canvas) { base.DispatchDraw(canvas); paint.Color = new Color(17, 52, 147); canvas.DrawRect(0, 0, Width, Height, paint); var starSize = Height / 10; var radius = Height / 3; var count = 12; var anglesCount = 5; paint.Color = Color.Yellow; foreach (var star in FlagHelper.GetStars(count, (float)radius, anglesCount, (float)starSize, new Xamarin.Forms.Point(Width / 2, Height / 2))) { var path = new Path(); var points = star.Select(point => (X: point.X, Y: point.Y)).ToList(); for (int i = 0; i < star.Count(); i++) { if (i == 0) { path.MoveTo((float)points[i].X, (float)points[i].Y); } else { path.LineTo((float)points[i].X, (float)points[i].Y); } } path.Close(); canvas.DrawPath(path, paint); } }