Ejemplo n.º 1
0
        public static void Draw(this SKCanvas canvas, CanvasDrawModel circle)
        {
            if (canvas == null)
            {
                throw new ArgumentException($"{nameof(canvas)} is null.", nameof(canvas));
            }

            try
            {
                var circleColor = circle.Color ?? Color.WhiteSmoke;
                var paint       = new SKPaint();

                if (circle.BorderColor.HasValue && circle.StrokeWidth > 0)
                {
                    circleColor       = circle.BorderColor.Value;
                    paint.Style       = SKPaintStyle.Stroke;
                    paint.StrokeWidth = circle.StrokeWidth;
                }
                else
                {
                    paint.Style = SKPaintStyle.Fill;
                }

                paint.Color = new SKColor(circleColor.R, circleColor.G, circleColor.B, circleColor.A);

                canvas.DrawCircle(circle.CentreX, circle.CentreY, circle.Radius, paint);
            }
            catch (Exception exception)
            {
                LogHelper.LogError(exception);
                throw;
            }
        }
Ejemplo n.º 2
0
        private static void DrawCompare(this SKCanvas canvas, SKImageInfo info, CelestialDrawModel origin, CelestialDrawModel compare)
        {
            var originRadius    = origin.Radius;
            var compareRadius   = compare.Radius;
            var maxCanvasWidth  = info.Width;
            var maxCanvasHeight = info.Height;
            var maxRadius       = DoubleHelper.GetMax(originRadius, compareRadius);
            var minRadius       = DoubleHelper.GetMin(originRadius, compareRadius);

            var divisionFactor = maxCanvasWidth * 0.9 / (minRadius * 4 > maxRadius ? 2 : 1);

            var factor = maxRadius / divisionFactor;

            var originFactoredRadius  = (int)DoubleHelper.GetMax(Math.Floor(originRadius / factor), 1);
            var compareFactoredRadius = (int)DoubleHelper.GetMax(Math.Floor(compareRadius / factor), 1);

            var originCentreX  = GetCentreX(maxCanvasWidth, originFactoredRadius, true);
            var compareCentreX = GetCentreX(maxCanvasWidth, compareFactoredRadius, false);

            var centreY = maxCanvasHeight / 2;

            var originDraw  = new CanvasDrawModel(origin.Id, origin.Description, originFactoredRadius, originCentreX, centreY, origin.Color, null, null, 0);
            var compareDraw = new CanvasDrawModel(compare.Id, compare.Description, compareFactoredRadius, compareCentreX, centreY, compare.Color, null, null, 0);

            canvas.Draw(originDraw);
            canvas.Draw(compareDraw);
        }
Ejemplo n.º 3
0
        private static void DrawOrbits(this SKCanvas canvas, IEnumerable <CelestialDrawModel> orbits, DrawParameterModel drawParameters)
        {
            foreach (var orbit in orbits.Where(x => x.Radius > 0))
            {
                var draw =
                    new CanvasDrawModel(
                        orbit.Id,
                        orbit.Description,
                        (int)Math.Ceiling(orbit.Radius * drawParameters.OrbitFactor) + SunRadius,
                        drawParameters.CentreX,
                        drawParameters.CentreY,
                        null,
                        orbit.BorderColor,
                        null,
                        orbit.StrokeWidth);

                canvas.Draw(draw);
            }
        }
Ejemplo n.º 4
0
        private static void DrawBodies(this SKCanvas canvas, IEnumerable <CelestialDrawModel> bodies, DrawParameterModel drawParameters)
        {
            var orderedBodies = bodies.OrderByDescending(x => x.Radius).ToList();
            var sizes         = new[] { SunRadius, 20, 18, 16, 14, 8, 8, 6, 4, 4 };

            for (var index = 0; index < orderedBodies.Count; index++)
            {
                try
                {
                    var body = orderedBodies[index];

                    var centreX = GetCentreValue(drawParameters.CentreX, body.Location, DrawOrientation.Vertical, drawParameters);
                    var centreY = GetCentreValue(drawParameters.CentreY, body.Location, DrawOrientation.Horizontal, drawParameters);

                    var draw =
                        new CanvasDrawModel(
                            body.Id,
                            body.Description,
                            sizes[index],
                            centreX,
                            centreY,
                            body.Color,
                            null,
                            null,
                            0);

                    canvas.Draw(draw);
                }
                catch (ArgumentException exception)
                {
                    LogHelper.LogError(exception);
                }
                catch (Exception exception)
                {
                    LogHelper.LogError(exception);
                }
            }
        }