예제 #1
0
        private void RenderSetupPentagram(SetUpPentagramModel setUpPentagram)
        {
            geometryPainter.PaintPentagram(canvas, new Point(170, 160));
            var points = geometryPainter.GetPentagramValuesPoints(new Point(163, 140));
            var pentagramValueModels = setUpPentagram.GetAllValueModelsOrderBy();

            for (var i = 0; i < 10; i++)
            {
                AddNumberToCanvas(points[i].X, points[i].Y, pentagramValueModels[i]);
            }
        }
예제 #2
0
        private void RenderBlueBackgroundPentagram(SetUpPentagramModel setUpPentagramModel)
        {
            if (eventBaZiModel == null)
            {
                return;
            }

            var redPointIndexesCount = new Dictionary <int, int>();
            var points = geometryPainter.GetPentagramValuesPoints(new Point(163, 280));
            var pentagramValueModels = setUpPentagramModel.GetAllValueModelsOrderBy();
            var redColorIndexes      = pentagramValueModels.Select((x, i) => new { i, x })
                                       .Where(t => t.x.Color.IsRed()).Select(t => t.i).ToList();

            void RenderRedPoint(PeriodsModel period)
            {
                var energyIndex   = MapEnergyToDefaultIndex(period.EventPeriod.Energy);
                var redPointIndex = redColorIndexes.First(x => x == energyIndex * 2 || x == energyIndex * 2 + 1);

                if (!redPointIndexesCount.ContainsKey(redPointIndex))
                {
                    if (redPointIndexesCount.Count >= 3)
                    {
                        return;
                    }

                    AddTextToCanvas(points[redPointIndex].X, points[redPointIndex].Y, "o", Colors.Red);
                    redPointIndexesCount.Add(redPointIndex, 1);
                }
                else
                {
                    AddTextToCanvas(points[redPointIndex].X + redPointIndexesCount[redPointIndex] * 7,
                                    points[redPointIndex].Y, "o", Colors.Red);
                    redPointIndexesCount[redPointIndex]++;
                }
            }

            geometryPainter.PaintPentagram(canvas, new Point(170, 300));
            var cycleModel = cycleModelBuilder.Build(birthDate, eventDatePicker.SelectedDate.Value);

            RenderRedPoint(cycleModel.Day);
            RenderRedPoint(cycleModel.Month);
            RenderRedPoint(cycleModel.Season);
            RenderRedPoint(cycleModel.Year);
            RenderRedPoint(cycleModel.Big);

            var point = RenderBlueBackgroundPentagramHelper.GetPoint(redPointIndexesCount.Keys, points);

            if (point.HasValue)
            {
                AddTextToCanvas(point.Value.X, point.Value.Y, "O", Colors.Blue);
            }
        }