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