示例#1
0
        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);
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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();
            }
        }
示例#4
0
        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);
            }
        }