示例#1
0
 public int Add(ChartItem value)
 {
     return(List.Add(value));
 }
示例#2
0
 public void Remove(ChartItem value)
 {
     List.Remove(value);
 }
示例#3
0
 public int IndexOf(ChartItem value)
 {
     return(List.IndexOf(value));
 }
示例#4
0
 public bool Contains(ChartItem value)
 {
     return(List.Contains(value));
 }
示例#5
0
        //*********************************************************************
        //
        // This method returns a bitmap to the calling function.  This is the method
        // that actually draws the pie chart and the legend with it.
        //
        //*********************************************************************

        public override Bitmap Draw()
        {
            int          perimeter = _perimeter;
            Rectangle    pieRect   = new Rectangle(0, 0, perimeter, perimeter - 1);
            Bitmap       bmp       = new Bitmap(perimeter + _legendWidth, perimeter);
            Graphics     grp       = null;
            StringFormat sf        = null;

            try
            {
                grp = Graphics.FromImage(bmp);
                sf  = new StringFormat();

                //Paint Back ground
                grp.FillRectangle(new SolidBrush(_backgroundColor), 0, 0, perimeter + _legendWidth, perimeter);

                //Align text to the right
                sf.Alignment = StringAlignment.Far;

                //Draw all wedges and legends
                for (int i = 0; i < _chartItems.Count; i++)
                {
                    ChartItem  item = (ChartItem)_chartItems[i];
                    SolidBrush brs  = null;
                    try
                    {
                        brs = new SolidBrush(item.ItemColor);
                        grp.FillPie(brs, pieRect, item.StartPos, item.SweepSize);
                        grp.FillRectangle(brs, perimeter + _bufferSpace, i * _legendFontHeight + 15, 10, 10);

                        grp.DrawString(item.Label, new Font(_legendFontStyle, _legendFontSize),
                                       new SolidBrush(Color.Black), perimeter + _bufferSpace + 20, i * _legendFontHeight + 13);

                        grp.DrawString(item.Value.ToString(), new Font(_legendFontStyle, _legendFontSize),
                                       new SolidBrush(Color.Black), perimeter + _bufferSpace + 200, i * _legendFontHeight + 13, sf);
                    }
                    finally
                    {
                        if (brs != null)
                        {
                            brs.Dispose();
                        }
                    }
                }

                //draws the border around Pie
                grp.DrawEllipse(new Pen(_borderColor, 2), pieRect);

                //draw border around legend
                grp.DrawRectangle(new Pen(_borderColor, 1), perimeter + _bufferSpace - 10, 10, 220, _chartItems.Count * _legendFontHeight + 25);

                //Draw Total under legend
                grp.DrawString("Total", new Font(_legendFontStyle, _legendFontSize, FontStyle.Bold),
                               new SolidBrush(Color.Black), perimeter + _bufferSpace + 30, (_chartItems.Count + 1) * _legendFontHeight, sf);
                grp.DrawString(_total.ToString(), new Font(_legendFontStyle, _legendFontSize, FontStyle.Bold),
                               new SolidBrush(Color.Black), perimeter + _bufferSpace + 200, (_chartItems.Count + 1) * _legendFontHeight, sf);

                grp.SmoothingMode = SmoothingMode.AntiAlias;
            }
            finally
            {
                if (sf != null)
                {
                    sf.Dispose();
                }
                if (grp != null)
                {
                    grp.Dispose();
                }
            }
            return(bmp);
        }