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]); } }
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); } }