public DrawingView(RectangleF rect)
            : base(rect)
        {
            ContentMode = UIViewContentMode.Redraw;
            this.AutoresizingMask = UIViewAutoresizing.All;
            this.BackColor = Color.Wheat;

            // Set Form1 size:
            //			this.Width = 350;
            //			this.Height = 300;
            dc = new DataCollection();
            cs = new ChartStyle(this);
            lg = new Legend();
            lg.IsLegendVisible = true;
            lg.LegendPosition = Legend.LegendPositionEnum.NorthWest;
            cs.IsY2Axis = true;
            cs.IsXGrid = false;
            cs.IsYGrid = false;
            cs.TickFont = new Font("Arial", 7, FontStyle.Regular);
            cs.TitleFont = new Font("Arial", 10, FontStyle.Regular);
            cs.XLimMin = 0f;
            cs.XLimMax = 30f;
            cs.YLimMin = -20f;
            cs.YLimMax = 20f;
            cs.XTick = 5.0f;
            cs.YTick = 5f;
            cs.Y2LimMin = 100f;
            cs.Y2LimMax = 700f;
            cs.Y2Tick = 100f;
            cs.XLabel = "X Axis";
            cs.YLabel = "Y Axis";
            cs.Y2Label = "Y2 Axis";
            cs.Title = "With Y2 Axis";
        }
Esempio n. 2
0
        void DrawLegend(Graphics g, float xCenter, float yCenter, float hWidth, float hHeight, DataCollection dc, ChartStyle cs)
        {
            float spacing = 8f;
            float textHeight = 8f;
            float htextHeight = textHeight / 2f;
            float lineLength = 30f;
            float hlineLength = lineLength / 2f;
            Rectangle legendRectangle;
            var aPen = new Pen (LegendBorderColor, 1f);
            var aBrush = new SolidBrush (LegendBackColor);

            if (isLegendVisible) {
                legendRectangle = new Rectangle ((int)xCenter - (int)hWidth,
                    (int)yCenter - (int)hHeight,
                    (int)(2.0f * hWidth), (int)(2.0f * hHeight));
                g.FillRectangle (aBrush, legendRectangle);
                if (IsBorderVisible)
                    g.DrawRectangle (aPen, legendRectangle);

                int n = 1;
                foreach (DataSeries ds in dc.DataSeriesList) {
                    // Draw lines and symbols:
                    float xSymbol = legendRectangle.X + spacing + hlineLength;
                    float xText = legendRectangle.X + 2 * spacing + lineLength;
                    float yText = legendRectangle.Y + n * spacing + (2 * n - 1) * htextHeight;
                    aPen = new Pen(ds.LineStyle.LineColor, ds.LineStyle.Thickness);
                    aPen.DashStyle = ds.LineStyle.Pattern;
                    var ptStart = new PointF (legendRectangle.X + spacing, yText);
                    var ptEnd = new PointF (legendRectangle.X + spacing + lineLength, yText);

                    g.DrawLine (aPen, ptStart, ptEnd);
                    ds.SymbolStyle.DrawSymbol (g, new CGPoint(xSymbol, yText));
                    // Draw text:
                    var sFormat = new StringFormat {
                        Alignment = StringAlignment.Near
                    };
                    g.DrawString (ds.SeriesName, LegendFont, new SolidBrush (textColor), new PointF (xText, yText - 8), sFormat);
                    n++;
                }
            }
            aPen.Dispose ();
            aBrush.Dispose ();
        }
Esempio n. 3
0
        public void AddLegend(Graphics g, DataCollection dc, ChartStyle cs)
        {
            if (dc.DataSeriesList.Count < 1)
                return;

            if (!IsLegendVisible)
                return;

            int numberOfDataSeries = dc.DataSeriesList.Count;
            string[] legendLabels = new string[dc.DataSeriesList.Count];
            int n = 0;
            foreach (DataSeries ds in dc.DataSeriesList) {
                legendLabels[n] = ds.SeriesName;
                n++;
            }

            float offSet = 10;
            float xc = 0f;
            float yc = 0f;
            CGSize size = g.MeasureString(legendLabels[0], LegendFont);
            var legendWidth = (float)size.Width;
            for (int i = 0; i < legendLabels.Length; i++) {
                size = g.MeasureString(legendLabels[i], LegendFont);
                var tempWidth = (float)size.Width;
                if (legendWidth < tempWidth)
                    legendWidth = tempWidth;
            }
            legendWidth = legendWidth + 50f;
            float hWidth = legendWidth / 2;
            float legendHeight = 18f * numberOfDataSeries;
            float hHeight = legendHeight / 2;

            switch (LegendPosition) {
                case LegendPositionEnum.East:
                    xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                    yc = cs.PlotArea.Y + cs.PlotArea.Height / 2;
                    break;
                case LegendPositionEnum.North:
                    xc = cs.PlotArea.X + cs.PlotArea.Width / 2;
                    yc = cs.PlotArea.Y + offSet + hHeight;
                    break;
                case LegendPositionEnum.NorthEast:
                    xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                    yc = cs.PlotArea.Y + offSet + hHeight;
                    break;
                case LegendPositionEnum.NorthWest:
                    xc = cs.PlotArea.X + offSet + hWidth;
                    yc = cs.PlotArea.Y + offSet + hHeight;
                    break;
                case LegendPositionEnum.South:
                    xc = cs.PlotArea.X + cs.PlotArea.Width / 2;
                    yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                    break;
                case LegendPositionEnum.SouthEast:
                    xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                    yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                    break;
                case LegendPositionEnum.SouthWest:
                    xc = cs.PlotArea.X + offSet + hWidth;
                    yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                    break;
                case LegendPositionEnum.West:
                    xc = cs.PlotArea.X + offSet + hWidth;
                    yc = cs.PlotArea.Y + cs.PlotArea.Height / 2;
                    break;
            }
            DrawLegend (g, xc, yc, hWidth, hHeight, dc, cs);
        }
        public void AddLegend(Graphics g, DataCollection dc, ChartStyle cs)
        {
            if (dc.DataSeriesList.Count < 1)
            {
                return;
            }
            if (!IsLegendVisible)
            {
                return;
            }
            int numberOfDataSeries = dc.DataSeriesList.Count;

            string[] legendLabels = new string[dc.DataSeriesList.Count];
            int      n            = 0;

            foreach (DataSeries ds in dc.DataSeriesList)
            {
                legendLabels[n] = ds.SeriesName;
                n++;
            }
            float offSet      = 10;
            float xc          = 0f;
            float yc          = 0f;
            SizeF size        = g.MeasureString(legendLabels[0], LegendFont);
            float legendWidth = size.Width;

            for (int i = 0; i < legendLabels.Length; i++)
            {
                size = g.MeasureString(legendLabels[i], LegendFont);
                float tempWidth = size.Width;
                if (legendWidth < tempWidth)
                {
                    legendWidth = tempWidth;
                }
            }
            legendWidth = legendWidth + 50.0f;
            float hWidth       = legendWidth / 2;
            float legendHeight = 18.0f * numberOfDataSeries;
            float hHeight      = legendHeight / 2;

            switch (LegendPosition)
            {
            case LegendPositionEnum.East:
                xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                yc = cs.PlotArea.Y + cs.PlotArea.Height / 2;
                break;

            case LegendPositionEnum.North:
                xc = cs.PlotArea.X + cs.PlotArea.Width / 2;
                yc = cs.PlotArea.Y + offSet + hHeight;
                break;

            case LegendPositionEnum.NorthEast:
                xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                yc = cs.PlotArea.Y + offSet + hHeight;
                break;

            case LegendPositionEnum.NorthWest:
                xc = cs.PlotArea.X + offSet + hWidth;
                yc = cs.PlotArea.Y + offSet + hHeight;
                break;

            case LegendPositionEnum.South:
                xc = cs.PlotArea.X + cs.PlotArea.Width / 2;
                yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                break;

            case LegendPositionEnum.SouthEast:
                xc = cs.PlotArea.X + cs.PlotArea.Width - offSet - hWidth;
                yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                break;

            case LegendPositionEnum.SouthWest:
                xc = cs.PlotArea.X + offSet + hWidth;
                yc = cs.PlotArea.Y + cs.PlotArea.Height - offSet - hHeight;
                break;

            case LegendPositionEnum.West:
                xc = cs.PlotArea.X + offSet + hWidth;
                yc = cs.PlotArea.Y + cs.PlotArea.Height / 2;
                break;
            }
            DrawLegend(g, xc, yc, hWidth, hHeight, dc, cs);
        }