public override void BeforeRendering(Graphics graphics) { if (Rows == 0 || Columns == 0) { throw new ArgumentException("Rows and Columns can not be zero"); } base.BeforeRendering(graphics); var cellWidth = this.Size.Width / Columns; var cellHeight = this.Size.Height / Rows; for (int row = 0; row < Rows; row++) { for (int col = 0; col < Columns; col++) { var size = new SizeF(cellWidth, cellHeight); var margin = new PointF(col * cellWidth, row * cellHeight); var mergedCell = GetMergedCell(row, col); if (mergedCell != null) { size = new SizeF((mergedCell.ToCol - mergedCell.FromCol + 1) * cellWidth, (mergedCell.ToRow - mergedCell.FromRow + 1) * cellHeight); margin = new PointF(mergedCell.FromCol * cellWidth, mergedCell.FromRow * cellHeight); } else if (IsInMergedPositions(row, col)) { continue; } var cell = new GdiRectangle { Border = new Models.Border { Color = LineColor, Size = 1 }, Size = size, Margin = margin }; var text = new GdiText { Content = GetText(row, col), TextColor = TextColor, HorizontalAlignment = Enum.GdiHorizontalAlign.Center, VerticalAlignment = Enum.GdiVerticalAlign.Middle, TextAlign = StringAlignment.Center }; cell.AddChild(text); this.AddChild(cell); } } }
protected virtual void AddSubTitle(GdiContainer mainContainer) { if (SubTitle == null || string.IsNullOrWhiteSpace(SubTitle.Text)) { return; } var gdiText = new GdiText { Content = SubTitle.Text, TextColor = SubTitle.Color, HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Center, VerticalAlignment = GdiSharp.Enum.GdiVerticalAlign.Bottom, Margin = new PointF(0, 10), Font = new SlimFont(SubTitle.FontName, SubTitle.FontSize, FontStyle.Bold) }; mainContainer.AddChild(gdiText); }
private void AddBarSeries(DataSeries series, int offsetY) { var y = (CellSize.Height / 2) + offsetY; foreach (var value in series.Data) { var length = WidthUnit * value; var bar = new GdiRectangle { Size = new SizeF(Math.Abs(length), BarSettingModel.Size), Margin = new PointF(0, y), BackgroundColor = series.Color, }; var text = new GdiText { Margin = new PointF(bar.Size.Width + 2, 0), Content = string.Format(BarSettingModel.FormatValue, value), Font = BarSettingModel.ValueFont, TextColor = Color.Gray, VerticalAlignment = GdiSharp.Enum.GdiVerticalAlign.Middle }; if (length > 0) { RightPanel.AddChild(bar); } else if (length < 0) { LeftPanel.AddChild(bar); bar.HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Right; text.HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Right; } bar.AddChild(text); y += CellSize.Height; } }
public override void BeforeRendering(Graphics graphics) { base.BeforeRendering(graphics); if (Values.Length != Colors.Length) { throw new ArgumentException("Values and Colors must have the same number of items."); } var size = this.Size; var pixelUnit = size.Width / 100; var sum = this.Values.Sum(); var x = 0f; var font = SlimFont.Default; font.Size = 10; for (int i = 0; i < Values.Length; i++) { var percent = Values[i] / sum * 100; var width = percent * pixelUnit; var section = new GdiRectangle { BackgroundColor = Colors[i], Margin = new PointF(x, 0), Size = new SizeF(width, size.Height) }; var text = new GdiText { Content = string.Format(TextFormat, percent), HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Center, VerticalAlignment = GdiSharp.Enum.GdiVerticalAlign.Middle, Font = font, TextColor = Color.Black }; section.AddChild(text); this.AddChild(section); x += width; } }
public override void BeforeRendering(Graphics graphics) { base.BeforeRendering(graphics); if (Values.Length != Colors.Length || Values.Length != TextColors.Length) { throw new ArgumentException("Values and Colors must have the same number of items."); } var sum = this.Values.Sum(); if (sum == 0) { return; } var size = this.Size; var pixelUnit = size.Height / 100; var y = size.Height; var font = SlimFont.Default; font.Size = 10; for (int i = 0; i < Values.Length; i++) { var percent = Values[i] / sum * 100; if (percent <= 0.1) { continue; } var height = percent * pixelUnit; var section = new GdiRectangle { BackgroundColor = Colors[i], Margin = new PointF(0, y - height), Size = new SizeF(size.Width, height) }; if (i < Values.Length - 1) { section.AddChild(new GdiHozLine { Length = size.Width, BackgroundColor = Color.White, LineHeight = 2 }); } var text = new GdiText { Content = string.Format(TextFormat, percent), HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Center, VerticalAlignment = GdiSharp.Enum.GdiVerticalAlign.Middle, Font = font, TextColor = TextColors[i] }; // move the text outside the column if (percent <= 2) { text.Margin = new PointF(size.Width, 0); text.HorizontalAlignment = GdiSharp.Enum.GdiHorizontalAlign.Left; text.TextColor = Color.Black; } section.AddChild(text); this.AddChild(section); y -= height; } }