Пример #1
0
        /// <summary>
        /// This method is where you generate your graph.
        /// </summary>
        /// <param name="masterPane">You are provided with a MasterPane instance that
        /// contains one GraphPane by default (accessible via masterPane[0]).</param>
        /// <param name="g">A graphics instance so you can easily make the call to AxisChange()</param>
        private void OnRenderGraph1(System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
        {
            // Get the GraphPane so we can work with it
            GraphPane myPane = masterPane[0];

            // Set the title and axis labels
            myPane.Title.Text       = "Cat Stats";
            myPane.YAxis.Title.Text = "Big Cats";
            myPane.XAxis.Title.Text = "Population";

            // Make up some data points
            string[] labels = { "Panther", "Lion", "Cheetah", "Cougar", "Tiger", "Leopard" };
            double[] x      = { 100, 115, 75, 22, 98, 40 };
            double[] x2     = { 120, 175, 95, 57, 113, 110 };
            double[] x3     = { 204, 192, 119, 80, 134, 156 };

            // Generate a red bar with "Curve 1" in the legend
            BarItem myCurve = myPane.AddBar("Here", x, null, Color.Red);

            // Fill the bar with a red-white-red color gradient for a 3d look
            myCurve.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red, 90f);

            // Generate a blue bar with "Curve 2" in the legend
            myCurve = myPane.AddBar("There", x2, null, Color.Blue);
            // Fill the bar with a Blue-white-Blue color gradient for a 3d look
            myCurve.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue, 90f);

            // Generate a green bar with "Curve 3" in the legend
            myCurve = myPane.AddBar("Elsewhere", x3, null, Color.Green);
            // Fill the bar with a Green-white-Green color gradient for a 3d look
            myCurve.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green, 90f);

            // Draw the Y tics between the labels instead of at the labels
            myPane.YAxis.MajorTic.IsBetweenLabels = true;

            // Set the YAxis labels
            myPane.YAxis.Scale.TextLabels = labels;
            // Set the YAxis to Text type
            myPane.YAxis.Type = AxisType.Text;

            // Set the bar type to stack, which stacks the bars by automatically accumulating the values
            myPane.BarSettings.Type = BarType.Stack;

            // Make the bars horizontal by setting the BarBase to "Y"
            myPane.BarSettings.Base = BarBase.Y;

            // Fill the axis background with a color gradient
            myPane.Chart.Fill = new Fill(Color.White,
                                         Color.FromArgb(255, 255, 166), 45.0F);

            masterPane.AxisChange(g);
        }
Пример #2
0
        /// <summary>
        /// Here is a completely independent second graph.  In InitializeComponent() above,
        /// ZedGraphWeb1 calls OnRenderGraph1, and ZedGraphWeb2 calls OnRenderGraph2.
        /// </summary>
        private void OnRenderGraph2(System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
        {
            // Get the GraphPane so we can work with it
            GraphPane myPane = masterPane[0];

            // Set the titles and axis labels
            myPane.Title.Text       = "My Test Date Graph";
            myPane.XAxis.Title.Text = "Date";
            myPane.YAxis.Title.Text = "My Y Axis";

            // Make up some data points from the Sine function
            PointPairList list  = new PointPairList();
            PointPairList list2 = new PointPairList();

            for (int i = 0; i < 36; i++)
            {
                double x  = new XDate(1995, i + 1, 1);
                double y  = Math.Sin((double)i * Math.PI / 15.0);
                double y2 = 2 * y;

                list.Add(x, y);
                list2.Add(x, y2);
            }

            // Generate a blue curve with circle symbols, and "My Curve 2" in the legend
            LineItem myCurve2 = myPane.AddCurve("My Curve 2", list, Color.Blue,
                                                SymbolType.Circle);

            // Fill the area under the curve with a white-red gradient at 45 degrees
            myCurve2.Line.Fill = new Fill(Color.White, Color.Red, 45F);
            // Make the symbols opaque by filling them with white
            myCurve2.Symbol.Fill = new Fill(Color.White);

            // Generate a red curve with diamond symbols, and "My Curve" in the legend
            LineItem myCurve = myPane.AddCurve("My Curve",
                                               list2, Color.MediumVioletRed, SymbolType.Diamond);

            // Fill the area under the curve with a white-green gradient
            myCurve.Line.Fill = new Fill(Color.White, Color.Green);
            // Make the symbols opaque by filling them with white
            myCurve.Symbol.Fill = new Fill(Color.White);

            // Set the XAxis to date type
            myPane.XAxis.Type      = AxisType.Date;
            myPane.XAxis.CrossAuto = true;

            // Fill the axis background with a color gradient
            myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45F);

            masterPane.AxisChange(g);
        }
Пример #3
0
        /// <summary>
        /// This method is where you generate your graph.
        /// </summary>
        /// <param name="masterPane">You are provided with a MasterPane instance that
        /// contains one GraphPane by default (accessible via masterPane[0]).</param>
        /// <param name="g">A graphics instance so you can easily make the call to AxisChange()</param>
        private void OnRenderGraph(System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
        {
            // Get the GraphPane so we can work with it
            GraphPane myPane = masterPane[0];

            myPane.Title.Text       = "Sales By Region";
            myPane.XAxis.Title.Text = "Region";
            myPane.YAxis.Title.Text = "Gross Sales, $Thousands";

            PointPairList list  = new PointPairList();
            PointPairList list2 = new PointPairList();
            PointPairList list3 = new PointPairList();
            Random        rand  = new Random();

            for (double x = 0; x < 5; x += 1.0)
            {
                double y  = rand.NextDouble() * 1000;
                double y2 = rand.NextDouble() * 1000;
                double y3 = rand.NextDouble() * 1000;
                list.Add(x, y);
                list2.Add(x, y2);
                list3.Add(x, y3);
            }

            BarItem myCurve = myPane.AddBar("Blue Team", list, Color.Blue);

            myCurve.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue);
            BarItem myCurve2 = myPane.AddBar("Red Team", list2, Color.Red);

            myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
            BarItem myCurve3 = myPane.AddBar("Green Team", list3, Color.Green);

            myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);

            myPane.XAxis.MajorTic.IsBetweenLabels = true;
            string[] labels = { "Africa", "Americas", "Asia", "Europe", "Australia" };
            myPane.XAxis.Scale.TextLabels = labels;
            myPane.XAxis.Type             = AxisType.Text;
            myPane.Fill       = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);
            myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);

            masterPane.AxisChange(g);
        }
Пример #4
0
    public void OnRenderGraph(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
    {
        GraphPane myPane = masterPane[0];

        myPane.Title.Text       = "Statistic for studet " + d.user.LastName + " for curriculum " + d.curriculum.Name;;
        myPane.XAxis.Title.Text = "Stage";
        myPane.YAxis.Title.Text = "Count";

        PointPairList list  = new PointPairList();
        PointPairList list2 = new PointPairList();


        for (int x = 0; x < d.Get_Name_Stage().Count; x++)
        {
            double y  = d.Get_Student_Stage_Count()[x];
            double y2 = d.Get_Total_Stage_Count()[x];

            list.Add(x, y);
            list2.Add(x, y2);
        }

        BarItem myCurve  = myPane.AddBar("Student Resoult", list, Color.Green);
        BarItem myCurve2 = myPane.AddBar("Stage Rank", list2, Color.Red);

        string[] label11 = new string[d.Get_Student_Stage_Count().Count];
        for (int x = 0; x < d.Get_Student_Stage_Count().Count; x++)
        {
            label11[x] = d.Get_Name_Stage()[x];
        }

        myPane.XAxis.MajorTic.IsBetweenLabels = true;

        myPane.XAxis.Scale.TextLabels = label11;
        myPane.XAxis.Type             = AxisType.Text;
        myPane.Fill       = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);
        myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);

        masterPane.AxisChange(g);
    }
        private void OnRenderUserChart(ZedGraph.Web.ZedGraphWeb z, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
        {
            GraphPane graphPane = masterPane[0];

            graphPane.Title.Text       = Resource.MemberGraphTitle;
            graphPane.XAxis.Title.Text = Resource.MemberGraphXAxisLabel;
            graphPane.YAxis.Title.Text = Resource.MemberGraphYAxisLabel;

            PointPairList pointList = new PointPairList();

            using (IDataReader reader = SiteUser.GetUserCountByYearMonth(siteSettings.SiteId))
            {
                while (reader.Read())
                {
                    double x = new XDate(Convert.ToInt32(reader["Y"]), Convert.ToInt32(reader["M"]), 1);
                    double y = Convert.ToDouble(reader["Users"]);
                    pointList.Add(x, y);
                }
            }

            LineItem myCurve2 = graphPane.AddCurve(Resource.MemberGraphYAxisLabel, pointList, Color.Blue, SymbolType.Circle);

            // Fill the area under the curve with a white-red gradient at 45 degrees
            myCurve2.Line.Fill = new Fill(Color.White, Color.Green, 45F);
            // Make the symbols opaque by filling them with white
            myCurve2.Symbol.Fill = new Fill(Color.White);

            // Set the XAxis to date type
            graphPane.XAxis.Type      = AxisType.Date;
            graphPane.XAxis.CrossAuto = true;

            // Fill the axis background with a color gradient
            graphPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45F);



            masterPane.AxisChange(g);
        }
Пример #6
0
        private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
        {
            ErrorMsg.Text = "";
            CY.GFive.DALProviders.SqlServerProvider.ScoreProvider sp = new CY.GFive.DALProviders.SqlServerProvider.ScoreProvider();
            if (string.IsNullOrEmpty(Request.Form.Get("Term")) || string.IsNullOrEmpty(Request.Form.Get("Course")))
            {
                ErrorMsg.Text = "参数错误";
                ZedGraphWeb1.Visible = false;
                return;
            }
            int term = Convert.ToInt32(Request.Form.Get("Term"));
            string course = Request.Form.Get("Course");
            string year = ddlYearNum.SelectedItem.ToString();
            string teacher = ddlTeacher.SelectedValue;
            List<string> classlist = sp.GetClassList(year, term, teacher, course);
            if (classlist.Count < 1)
                return;
            GraphPane myPane = masterPane[0];

            myPane.Title.Text = "分数段统计";       //设计图表的标题
            myPane.XAxis.Title.Text = "分数段";    //X轴标题
            myPane.YAxis.Title.Text = "人数";          //Y轴标题
            string[] labels = new string[6];
            labels[0] = "60以下";
            labels[1] = "60-69";
            labels[2] = "70-79";
            labels[3] = "80-89";
            labels[4] = "90-99";
            labels[5] = "100";

            foreach (string classcode in classlist)
            {
                Random rand = new Random();
                int n = rand.Next(4);
                Color temp = Color.FromArgb(n * 10, n * 60, n * 50);
                DataSet ds = sp.GetScoreUnionByParam(year, term, classcode, course);
                CY.GFive.Core.Business.ClassInfo citemp = CY.GFive.Core.Business.ClassInfo.GetByCode(classcode);
                PointPairList list = new PointPairList();
                for (int i = 0; i < 6; i++)
                    list.Add(0, Convert.ToInt32(ds.Tables[0].Rows[i]["人数"]));
                BarItem myCurve = myPane.AddBar(citemp.ClassName, list, temp);
                myCurve.Bar.Fill = new Fill(temp, Color.White, temp);
            }

            myPane.XAxis.MajorTic.IsBetweenLabels = false; //柱状显示位置,true为在两个下标题值的中间,flase为两边
            myPane.XAxis.Scale.TextLabels = labels;//下标题的内容
            myPane.XAxis.Type = AxisType.Text;
            myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 90.0f);//图表外层背景填充色,由color1到color2渐变,参数3为方向
            myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 270.0f);//图表内层背景填充色,由color1到color2渐变,参数3为方向
            ZedGraphWeb1.Visible = true;
            masterPane.AxisChange(g);
        }
Пример #7
0
    protected void ZedGraphWebLevelSuiStatistic_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, Graphics g, MasterPane masterPane)
    {
        if (_infoHashtable != null)
        {
            //整理数据
            int startLevel = int.Parse(TextBoxStartLevel.Text.Trim());
            int endLevel = int.Parse(TextBoxEndLevel.Text.Trim());
            int groupCount = int.Parse(TextBoxGroup.Text.Trim());
            string[] levels = new string[(endLevel - startLevel) / groupCount + 1];
            double[] counts;
            Color[] roleTypeColor = new Color[]{
                Color.Blue,
                Color.Brown,
                Color.DarkGoldenrod,
                Color.Beige,
                Color.Yellow,
                Color.Coral,
                Color.Pink,
                Color.Green,
                Color.Gray
            };

            for (int index = 0; index != levels.Length; ++index)
            {
                levels[index] = string.Concat(startLevel + index * groupCount, '-', startLevel + (index + 1) * groupCount - 1);
            }           

            GraphPane graphPane = masterPane[0];

            //绘制图表
            graphPane.Title.Text = string.Format("{0}-{1} {2} {3}", startLevel, endLevel,
                StringDef.Role + StringDef.Total + StringDef.Colon, _total.ToString());
            graphPane.Title.IsVisible = true;
            graphPane.Title.FontSpec.Size = 14;

            graphPane.Fill = new Fill(WebConfig.GraphPaneBgColor);
            graphPane.Legend.FontSpec.Fill.IsVisible = false;
            graphPane.Legend.FontSpec.Size = 10.5f;
            graphPane.Legend.Fill.IsVisible = false;
            graphPane.Legend.Border.IsVisible = false;

            graphPane.YAxis.Title.Text = StringDef.Count;
            graphPane.YAxis.Title.FontSpec.IsBold = false;
            graphPane.YAxis.Title.FontSpec.Size = 10.5f;
            graphPane.YAxis.Scale.FontSpec.Size = 10.5f;
            graphPane.YAxis.MajorGrid.IsVisible = true;
            graphPane.YAxis.MajorGrid.DashOff = 0;
            graphPane.YAxis.MajorGrid.Color = Color.Gray;
            graphPane.YAxis.MinorGrid.IsVisible = true;
            graphPane.YAxis.MinorGrid.Color = Color.LightGray;
            graphPane.YAxis.MinorGrid.DashOff = 0;

            graphPane.XAxis.Title.Text = StringDef.Level;
            graphPane.XAxis.Title.FontSpec.IsBold = false;
            graphPane.XAxis.Title.FontSpec.Size = 10.5f;
            graphPane.XAxis.Scale.IsVisible = true;
            graphPane.XAxis.Type = AxisType.Text;
            graphPane.XAxis.Scale.TextLabels = levels;
            graphPane.XAxis.Scale.FontSpec.Size = 10.5f;

            switch (DropDownListBarType.SelectedItem.Text)
            {
                case "Stack":
                    graphPane.BarSettings.Type = BarType.Stack;
                    break;
                case "PercentStack":
                    graphPane.BarSettings.Type = BarType.PercentStack;
                    break;
                case "Cluster":
                    graphPane.BarSettings.Type = BarType.Cluster;
                    break;
                case "ClusterHiLow":
                    graphPane.BarSettings.Type = BarType.ClusterHiLow;
                    break;
                case "Overlay":
                    graphPane.BarSettings.Type = BarType.Overlay;
                    break;
                case "SortedOverlay":
                    graphPane.BarSettings.Type = BarType.SortedOverlay;
                    break;
            }            

            for (int roleType = 0; roleType != 10; ++roleType)
            {
                ArrayList infoList = _infoHashtable[(FS2RoleType)roleType] as ArrayList;
                if (infoList != null)
                {
                    counts = new double[(endLevel - startLevel) / groupCount + 1];
                    for (int index = 0; index != levels.Length; ++index)
                    {
                        foreach (LevelInfo info in (LevelInfo[])infoList.ToArray(typeof(LevelInfo)))
                        {
                            if (info.Level >= startLevel + index * groupCount && info.Level < startLevel + (index + 1) * groupCount)
                                counts[index] += info.Num;
                            else if (info.Level >= startLevel + (index + 1) * groupCount)
                                break;
                        }
                    }
                    string classDescription = string.Empty;
                    switch ((FS2RoleType)roleType)
                    {
                        case FS2RoleType.Jiashi:
                            classDescription = StringDef.Jiashi;
                            break;
                        case FS2RoleType.Xuanfeng:
                            classDescription = StringDef.XuanFeng;
                            break;
                        case FS2RoleType.Xingtian:
                            classDescription = StringDef.XingTian;
                            break;
                        case FS2RoleType.Daoshi:
                            classDescription = StringDef.Daoshi;
                            break;
                        case FS2RoleType.Zhenren:
                            classDescription = StringDef.ZhenRen;
                            break;
                        case FS2RoleType.Tianshi:
                            classDescription = StringDef.TianShi;
                            break;
                        case FS2RoleType.Yiren:
                            classDescription = StringDef.Yiren;
                            break;
                        case FS2RoleType.Shoushi:
                            classDescription = StringDef.ShouShi;
                            break;
                        case FS2RoleType.Yishi:
                            classDescription = StringDef.YiShi;
                            break;
                    }
                    BarItem bar = graphPane.AddBar(classDescription, null, counts, roleTypeColor[(int)roleType]);
                    bar.Bar.Fill = new Fill(roleTypeColor[(int)roleType]);
                }
            }

            masterPane.AxisChange(g);
            BarItem.CreateBarLabels(graphPane, true, string.Empty, TextObj.Default.FontFamily, 10.5f,
                TextObj.Default.FontColor, false, false, false);
        }
    }
Пример #8
0
    //void CreateTableHead()
    //{
    //    if(TextBoxRoleName.Text!=null&&TextBoxRoleName.Text.Trim().Length!=0)
    //    {
    //        TableRow rowHead = new TableRow();

    //        TableHeaderCell cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.RoleName;
    //        rowHead.Cells.Add(cellHead);

    //        cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Date;
    //        rowHead.Cells.Add(cellHead);

    //        cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Count;
    //        rowHead.Cells.Add(cellHead);

    //        cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Percentage;
    //        rowHead.Cells.Add(cellHead);

    //        TableSearchTaiSuiList.Rows.Add(rowHead);
    //    }
    //    else 
    //    {
    //        TableRow rowHead = new TableRow();

    //        TableHeaderCell cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Date;
    //        rowHead.Cells.Add(cellHead);

    //        cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Count;
    //        rowHead.Cells.Add(cellHead);

    //        cellHead = new TableHeaderCell();
    //        cellHead.Text = StringDef.Percentage;
    //        rowHead.Cells.Add(cellHead);

    //        TableSearchTaiSuiList.Rows.Add(rowHead);
    //    }
    //}

    //void CreateSearchResultList(TaiSuiUseInfo[] infos, int total)
    //{
    //    if (infos != null)
    //    {
    //        if (TextBoxRoleName.Text != null && TextBoxRoleName.Text.Trim().Length != 0)
    //        {
    //            foreach (TaiSuiUseInfo info in infos)
    //            {
    //                TableRow row = new TableRow();
    //                TableCell cell = new TableCell();
    //                cell.Text = TextBoxRoleName.Text.Trim();
    //                row.Cells.Add(cell);
    //                cell = new TableCell();
    //                cell.Text = info.date.ToShortDateString();
    //                row.Cells.Add(cell);
    //                cell = new TableCell();
    //                cell.Text = info.num.ToString();
    //                row.Cells.Add(cell);
    //                cell = new TableCell();
    //                cell.Text = total == 0 ? "0" : Decimal.Round((decimal)info.num / total, 2) * 100 + "%";
    //                row.Cells.Add(cell);
    //                TableSearchTaiSuiList.Rows.Add(row);
    //            }
    //        }
    //        else
    //        {
    //            foreach (TaiSuiUseInfo info in infos)
    //            {
    //                TableRow row = new TableRow();
    //                TableCell cell = new TableCell();
    //                cell.Text = info.date.ToShortDateString();
    //                row.Cells.Add(cell);
    //                cell = new TableCell();
    //                cell.Text = info.num.ToString();
    //                row.Cells.Add(cell);
    //                cell = new TableCell();
    //                cell.Text = total == 0 ? "0" : Decimal.Round((decimal)info.num / total, 2) * 100 + "%";
    //                row.Cells.Add(cell);
    //                TableSearchTaiSuiList.Rows.Add(row);
    //            }
    //        }
    //        TableRow rowTail = new TableRow();
    //        TableCell cellTail = new TableCell();
    //        cellTail.ColumnSpan = TextBoxRoleName.Text != null && TextBoxRoleName.Text.Trim().Length != 0 ? 4 : 3;
    //        cellTail.Font.Bold = true;
    //        cellTail.Text = StringDef.Total + StringDef.Colon + total;
    //        rowTail.Cells.Add(cellTail);

    //        TableSearchTaiSuiList.Rows.Add(rowTail);
    //    }
    //}

    protected void ZedGraphWebTaiSuiStatistic_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject,Graphics g, MasterPane masterPane)
    {
        if (_statInfo != null)
        {
            //整理数据
            double[] timeArray = null;
            double[] counts = null;

            if (RadioButtonListType.SelectedValue.Equals("Day"))
            {
                //按天
                TimeSpan span = _end.Subtract(_start);
                timeArray = new double[span.Days + 1];
                counts = new double[span.Days + 1];

                for (int index = 0; index != span.Days + 1; ++index)
                {
                    DateTime tempDate = _start.Date.AddDays(index);
                    timeArray[index] = new XDate(tempDate);
                    foreach (TaiSuiUseInfo info in _statInfo)
                    {
                        //如果相等赋num,如果比date的日期小则结束
                        if (tempDate.Date.Equals(info.date))
                        {
                            counts[index] = info.num;
                            break;
                        }
                        else if (tempDate.Date < info.date)
                        {
                            break;
                        }
                    }
                }
            }
            else
            {
                //按月
                int monthLength = (_end.Year - _start.Year) * 12 + (_end.Month - _start.Month);
                timeArray = new double[monthLength + 1];
                counts = new double[monthLength + 1];

                for (int index = 0; index != monthLength + 1; ++index)
                {
                    DateTime tempDate = _start.Date.AddMonths(index);
                    timeArray[index] = new XDate(tempDate);
                    foreach (TaiSuiUseInfo info in _statInfo)
                    {
                        //如果相等赋num,如果比date的日期小则结束
                        if (tempDate.ToString("yyyyMM").Equals(info.date.ToString("yyyyMM")))
                        {
                            counts[index] = info.num;
                            break;
                        }
                        else if (tempDate.Date < info.date)
                        {
                            break;
                        }
                    }
                }
            }

            GraphPane graphPane = masterPane[0];

            //绘制图表
            graphPane.Title.Text = string.Format("{0} {1} {2} {3}", _start.ToShortDateString(), StringDef.To, _end.ToShortDateString(),
                StringDef.TaiSui + StringDef.Total + StringDef.Colon + _totalCount.ToString());
            graphPane.Title.IsVisible = true;
            graphPane.Title.FontSpec.Size = 14;

            graphPane.Fill = new Fill(WebConfig.GraphPaneBgColor);
            graphPane.Legend.FontSpec.Fill.IsVisible = false;
            graphPane.Legend.FontSpec.Size = 10.5f;
            graphPane.Legend.Fill.IsVisible = false;
            graphPane.Legend.Border.IsVisible = false;

            graphPane.YAxis.Title.Text = StringDef.UseCount;
            graphPane.YAxis.Title.FontSpec.IsBold = false;
            graphPane.YAxis.Title.FontSpec.Size = 10.5f;
            graphPane.YAxis.Scale.FontSpec.Size = 10.5f;
            graphPane.YAxis.MajorGrid.IsVisible = true;
            graphPane.YAxis.MajorGrid.DashOff = 0;
            graphPane.YAxis.MajorGrid.Color = Color.Gray;
            graphPane.YAxis.MinorGrid.IsVisible = true;
            graphPane.YAxis.MinorGrid.Color = Color.LightGray;
            graphPane.YAxis.MinorGrid.DashOff = 0;

            graphPane.XAxis.Title.Text = StringDef.Date;
            graphPane.XAxis.Title.FontSpec.IsBold = false;
            graphPane.XAxis.Title.FontSpec.Size = 10.5f;
            graphPane.XAxis.Scale.MajorUnit = DateUnit.Day;
            graphPane.XAxis.MinorGrid.IsVisible = false;            
            graphPane.XAxis.Type = AxisType.DateAsOrdinal;
            if (RadioButtonListType.SelectedValue.Equals("Day"))
                graphPane.XAxis.Scale.Format = "MM-dd";
            else
                graphPane.XAxis.Scale.Format = "yyyy-MM";
            graphPane.XAxis.Scale.FontSpec.Size = 10.5f;
            //graphPane.XAxis.Scale.FontSpec.Angle = 45;

            graphPane.BarSettings.Type = BarType.Cluster;

            BarItem barItem = graphPane.AddBar(StringDef.UseCount, timeArray, counts, Color.Blue);
            masterPane.AxisChange(g);
            BarItem.CreateBarLabels(graphPane, false, string.Empty, TextObj.Default.FontFamily, 10.5f,
                TextObj.Default.FontColor, false, false, false);
        }
    }
Пример #9
0
    protected void graphStatistics_OnRenderGraph(ZedGraph.Web.ZedGraphWeb z, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
    {
        GraphPane myPane = masterPane[0];

        myPane.Border.Color          = Color.White;
        myPane.Title.Text            = Lang.Statistics_for_all_members;
        myPane.XAxis.Title.Text      = "";  //Lang.Participants;
        myPane.XAxis.Scale.IsVisible = false;
        myPane.YAxis.Title.Text      = "%"; // Lang.ErrorPercent;

        myPane.YAxis.Scale.Max = 11.0f;
        myPane.YAxis.Scale.Min = -11.0f;

        myPane.Legend.IsVisible          = true;
        myPane.Chart.Fill                = new Fill(Color.White, Color.FromArgb(255, Color.White), 45.0F);
        myPane.YAxis.Scale.MaxGrace      = 0.2;
        myPane.YAxis.MajorGrid.IsVisible = true;
        myPane.YAxis.MinorGrid.IsVisible = true;

        if (String.IsNullOrEmpty(ddStatistics.SelectedValue))
        {
            myPane.Title.Text      = Lang.Statistics_for_all_members_no_results;
            myPane.XAxis.Scale.Max = 1;
            myPane.XAxis.Scale.Min = 0;
            return;
        }

        List <Guid> idList = new List <Guid>();

        try
        {
            Database.Interface.open();
            Database.Account.select_ID(ref idList, Convert.ToInt32(ddStatistics.SelectedValue));

            PointPairList list       = new PointPairList();
            PointPairList local_list = new PointPairList();
            PointPairList eList      = new PointPairList();

            int count = 0;

            foreach (Guid id in idList)
            {
                DataSet dataSet = Database.RingtestReport.select_Error_CalculatedUncertainty_RingtestBoxID_MCAType_ActivityRef_where_AccountID_Year(id, Convert.ToInt32(ddStatistics.SelectedValue));
                if (dataSet.Tables[0].Rows.Count <= 0)
                {
                    continue;
                }

                double count_offset = (double)count;
                for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
                {
                    double error       = Convert.ToDouble(dataSet.Tables[0].Rows[i][0]);
                    double uncertainty = Convert.ToDouble(dataSet.Tables[0].Rows[i][1]);
                    string MCAType     = dataSet.Tables[0].Rows[i][3].ToString();
                    if (MCAType.ToLower() != "serie10")
                    {
                        double activity = Convert.ToDouble(dataSet.Tables[0].Rows[i][4]);
                        uncertainty = (uncertainty / activity) * 100.0;
                    }

                    if (id.ToString() == hiddenAccountID.Value)
                    {
                        local_list.Add(count, error);
                    }
                    else
                    {
                        list.Add(count, error);
                    }

                    eList.Add(count_offset, error + uncertainty, error - uncertainty);
                }

                count++;
            }

            if (count < 5)
            {
                myPane.CurveList.Clear();
                Utils.displayStatus(ref labelStatusStatistics, Color.SeaGreen, Lang.Number_of_results_registered_is + " " + count.ToString() + ". " + Lang.Need_5_to_display_data);
            }
            else
            {
                myPane.XAxis.Scale.Max = count;
                myPane.XAxis.Scale.Min = -1;

                LineItem curve = myPane.AddCurve("Andres rapporterte resultater", list, Color.White, SymbolType.Circle);
                curve.Line.IsVisible = false;
                curve.Symbol.Size    = 6;
                curve.Symbol.Fill    = new Fill(Color.DodgerBlue);

                LineItem local_curve = myPane.AddCurve("Egne rapporterte resultater", local_list, Color.White, SymbolType.Circle);
                local_curve.Line.IsVisible = false;
                local_curve.Symbol.Size    = 6;
                local_curve.Symbol.Fill    = new Fill(Color.IndianRed);

                ErrorBarItem errBar = myPane.AddErrorBar("Beregent usikkerhet", eList, Color.Red);
                errBar.Bar.PenWidth = 1;
            }
        }
        catch (Exception ex)
        {
            Utils.displayStatus(ref labelStatusStatistics, Color.Red, ex.Message);
        }
        finally
        {
            Database.Interface.close();
        }

        masterPane.AxisChange(g);
    }
Пример #10
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="OutputStream"></param>
        /// <param name="Format"></param>
        /// <param name="bShowTransparency">if true, draw squares instead of leaving the
        /// background transparent</param>
        /// <remarks>
        /// bShowTransparency is set to true in design mode, to false otherwise.
        /// </remarks>
        protected MasterPane CreateGraph( System.IO.Stream OutputStream, ImageFormat Format,
				bool bShowTransparency )
        {
            RectangleF rect = new RectangleF( 0, 0, this.Width, this.Height );
            MasterPane mp = new MasterPane( string.Empty, rect );
            mp.Margin.All = 0;
            mp.Fill.IsVisible = false;
            mp.Border.IsVisible = false;

            // create all required panes
            //for ( int i = 0; i < this.PaneCount; i++ )
            //{
            mp.Add( new GraphPane( rect, Title, string.Empty, string.Empty ) );
            //}

            // create output bitmap container
            Bitmap image = new Bitmap( this.Width, this.Height );
            using ( Graphics g = Graphics.FromImage( image ) )
            {
                // Apply layout plan
                //mp.SetLayout( this.PaneLayout );
                mp.ReSize( g, rect );

                // Use callback to gather more settings and data values
                OnDrawPane( g, mp );

                // Allow designer control of axischange
                if ( this.AxisChanged ) mp.AxisChange( g );

                // Render the graph to a bitmap
                if ( bShowTransparency && mp.Fill.Color.A != 255 )
                {
                    //Show the transparency as white/gray filled squares
                    // We need to add the resource namespace to its name
                    //string resourceName = string.Format( "{0}.transparency.png", GetType().Namespace );
                    string resourceName = "ZedGraph.ZedGraph.transparency.png";
                    Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream( resourceName );

                    if ( stream == null )
                        throw new Exception( "Does the Build Action of the resource " + resourceName + " is set to Embedded Resource ?" );

                    using ( System.Drawing.Image brushImage = new Bitmap( stream ) )
                    using ( TextureBrush brush = new TextureBrush( brushImage, WrapMode.Tile ) )
                    {
                        g.FillRectangle( brush, 0, 0, this.Width, this.Height );
                    }
                    stream.Close();
                }
                mp.Draw( g );
            }

            // Stream the graph out
            MemoryStream ms = new MemoryStream();
            image.Save( ms, Format );

            //TODO: provide caching options
            ms.WriteTo( OutputStream );

            return mp;
        }
Пример #11
0
        private void Form1_Load(object sender, EventArgs e)
        {
            CreateGraph_BasicDate();

            Trace.Listeners.Add(new TextWriterTraceListener( @"myTrace.txt" ) );
            Trace.AutoFlush = true;

            memGraphics.CreateDoubleBuffer(this.CreateGraphics(),
                this.ClientRectangle.Width, this.ClientRectangle.Height);

            #if false	// Multi Y Axis demo
            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "Demonstration of Multi Y Graph",
                "Time, s",
                "Velocity, m/s" );

            // Set the titles and axis labels
            myPane.Y2Axis.Title.Text = "Acceleration, m/s2";

            // Make up some data _points based on the Sine function
            PointPairList vList = new PointPairList();
            PointPairList aList = new PointPairList();
            PointPairList dList = new PointPairList();
            PointPairList eList = new PointPairList();

            for ( int i=0; i<30; i++ )
            {
                double time = (double) i;
                double acceleration = 2.0;
                double velocity = acceleration * time;
                double distance = acceleration * time * time / 2.0;
                double energy = 100.0 * velocity * velocity / 2.0;
                aList.Add( time, acceleration );
                vList.Add( time, velocity );
                eList.Add( time, energy );
                dList.Add( time, distance );
            }

            // Generate a red curve with diamond symbols, and "Velocity" in the _legend
            LineItem myCurve = myPane.AddCurve( "Velocity",
                vList, Color.Red, SymbolType.Diamond );
            // Fill the symbols with white
            myCurve.Symbol.Fill = new Fill( Color.White );

            // Generate a blue curve with circle symbols, and "Acceleration" in the _legend
            myCurve = myPane.AddCurve( "Acceleration",
                aList, Color.Blue, SymbolType.Circle );
            // Fill the symbols with white
            myCurve.Symbol.Fill = new Fill( Color.White );
            // Associate this curve with the Y2 axis
            myCurve.IsY2Axis = true;

            // Generate a green curve with square symbols, and "Distance" in the _legend
            myCurve = myPane.AddCurve( "Distance",
                dList, Color.Green, SymbolType.Square );
            // Fill the symbols with white
            myCurve.Symbol.Fill = new Fill( Color.White );
            // Associate this curve with the second Y axis
            myCurve.YAxisIndex = 1;

            // Generate a Black curve with triangle symbols, and "Energy" in the _legend
            myCurve = myPane.AddCurve( "Energy",
                eList, Color.Black, SymbolType.Triangle );
            // Fill the symbols with white
            myCurve.Symbol.Fill = new Fill( Color.White );
            // Associate this curve with the Y2 axis
            myCurve.IsY2Axis = true;
            // Associate this curve with the second Y2 axis
            myCurve.YAxisIndex = 1;

            // Show the x axis grid
            myPane.XAxis.MajorGrid.IsVisible = true;

            // Make the Y axis scale red
            myPane.YAxis.Scale.FontSpec.FontColor = Color.Red;
            myPane.YAxis.Title.FontSpec.FontColor = Color.Red;
            // turn off the opposite tics so the Y tics don't show up on the Y2 axis
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;
            // Don't display the Y zero line
            myPane.YAxis.MajorGrid.IsZeroLine = false;
            // Align the Y axis labels so they are flush to the axis
            myPane.YAxis.Scale.Align = AlignP.Inside;
            myPane.YAxis.Scale.Max = 100;

            // Enable the Y2 axis display
            myPane.Y2Axis.IsVisible = true;
            // Make the Y2 axis scale blue
            myPane.Y2Axis.Scale.FontSpec.FontColor = Color.Blue;
            myPane.Y2Axis.Title.FontSpec.FontColor = Color.Blue;
            // turn off the opposite tics so the Y2 tics don't show up on the Y axis
            myPane.Y2Axis.MajorTic.IsOpposite = false;
            myPane.Y2Axis.MinorTic.IsOpposite = false;
            // Display the Y2 axis grid lines
            myPane.Y2Axis.MajorGrid.IsVisible = true;
            // Align the Y2 axis labels so they are flush to the axis
            myPane.Y2Axis.Scale.Align = AlignP.Inside;
            myPane.Y2Axis.Scale.Min = 1.5;
            myPane.Y2Axis.Scale.Max = 3;

            myPane.YAxis.IsVisible = true;
            //myPane.YAxis.IsTic = false;
            myPane.YAxis.MinorTic.IsOutside = false;
            myPane.YAxis.MajorTic.IsCrossOutside = false;
            myPane.YAxis.MinorTic.IsCrossOutside = false;
            myPane.YAxis.MajorTic.IsInside = false;
            myPane.YAxis.MinorTic.IsInside = false;
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;

            // Create a second Y Axis, green
            YAxis yAxis3b = new YAxis( "Test Axis" );
            myPane.YAxisList.Add( yAxis3b );
            yAxis3b.Scale.FontSpec.FontColor = Color.Brown;
            yAxis3b.Title.FontSpec.FontColor = Color.Brown;
            yAxis3b.Color = Color.Brown;
            yAxis3b.MajorTic.IsOutside = false;
            yAxis3b.MinorTic.IsOutside = false;
            yAxis3b.MajorTic.IsOpposite = false;
            yAxis3b.MinorTic.IsOpposite = false;
            //yAxis3b.IsScaleLabelsInside = true;
            yAxis3b.Title.IsTitleAtCross = false;
            yAxis3b.MajorTic.IsInside = false;
            yAxis3b.MinorTic.IsInside = false;
            yAxis3b.MajorTic.IsOpposite = false;
            yAxis3b.MinorTic.IsOpposite = false;

            // Create a second Y Axis, green
            YAxis yAxis3c = new YAxis( "Test 2 Axis" );
            myPane.YAxisList.Add( yAxis3c );
            yAxis3c.Scale.FontSpec.FontColor = Color.Brown;
            yAxis3c.Title.FontSpec.FontColor = Color.Brown;
            yAxis3c.Color = Color.Brown;
            yAxis3c.MajorTic.IsOutside = false;
            yAxis3c.MinorTic.IsOutside = false;
            yAxis3c.MajorTic.IsOpposite = false;
            yAxis3c.MinorTic.IsOpposite = false;
            //yAxis3c.IsScaleLabelsInside = true;
            yAxis3c.Title.IsTitleAtCross = false;
            yAxis3c.MajorTic.IsInside = false;
            yAxis3c.MinorTic.IsInside = false;
            yAxis3c.MajorTic.IsOpposite = false;
            yAxis3c.MinorTic.IsOpposite = false;

            // Create a second Y Axis, green
            YAxis yAxis3 = new YAxis( "Distance, m" );
            myPane.YAxisList.Add( yAxis3 );
            yAxis3.Scale.FontSpec.FontColor = Color.Green;
            yAxis3.Title.FontSpec.FontColor = Color.Green;
            yAxis3.Color = Color.Green;
            // turn off the opposite tics so the Y2 tics don't show up on the Y axis
            yAxis3.MajorTic.IsInside = false;
            yAxis3.MinorTic.IsInside = false;
            yAxis3.MajorTic.IsOpposite = false;
            yAxis3.MinorTic.IsOpposite = false;
            // Align the Y2 axis labels so they are flush to the axis
            yAxis3.Scale.Align = AlignP.Inside;
            //yAxis3.AxisGap = 0;

            Y2Axis yAxis4 = new Y2Axis( "Energy" );
            yAxis4.IsVisible = true;
            myPane.Y2AxisList.Add( yAxis4 );
            // turn off the opposite tics so the Y2 tics don't show up on the Y axis
            yAxis4.MajorTic.IsInside = false;
            yAxis4.MinorTic.IsInside = false;
            yAxis4.MajorTic.IsOpposite = false;
            yAxis4.MinorTic.IsOpposite = false;
            // Align the Y2 axis labels so they are flush to the axis
            yAxis4.Scale.Align = AlignP.Inside;
            yAxis4.Type = AxisType.Log;
            yAxis4.Scale.Min = 100;

            // Fill the axis background with a gradient
            myPane.Chart.Fill = new Fill( Color.White, Color.LightGoldenrodYellow, 45.0f );
            #endif

            #if false	// SampleMultiPointList Demo
            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "Demo for SampleMultiPointList",
                "Time",
                "Distance Traveled" );
            SetSize();

            SampleMultiPointList myList = new SampleMultiPointList();
            myList.YData = PerfDataType.Distance;

            // note how it does not matter that we created the second list before actually
            // adding the data -- this is because the cloned list shares data with the
            // original
            SampleMultiPointList myList2 = new SampleMultiPointList( myList );
            myList2.YData = PerfDataType.Velocity;

            for ( int i=0; i<20; i++ )
            {
                double time = (double) i;
                double acceleration = 1.0;
                double velocity = acceleration * time;
                double distance = acceleration * time * time / 2.0;
                PerformanceData perfData = new PerformanceData( time, distance, velocity, acceleration );
                myList.Add( perfData );
            }

            myPane.AddCurve( "Distance", myList, Color.Blue );
            myPane.AddCurve( "Velocity", myList2, Color.Red );

            #endif

            #if false	// GradientByZ

            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "Wacky Widget Company\nProduction Report",
                "Time, Days\n(Since Plant Construction Startup)",
                "Widget Production\n(units/hour)" );
            SetSize();

            string[] ystr = { "one", "two", "three", "four", "five" };

            double[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            double[] y = { .1, .2, .3, .4, .5, .4, .3, .2, .1, .2 };
            //double[] y = { 20, 10, 50, 25, 35, 75, 90, 40, 33, 50 };
            double[] z = { 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 };
            PointPairList list = new PointPairList( x, y, z );

            Color[] colors = { Color.Red, Color.Green, Color.Blue,
                                Color.Yellow, Color.Orange };
            Fill fill = new Fill( colors );
            fill.Type = FillType.GradientByZ;
            fill.RangeMin = 1;
            fill.RangeMax = 5;

            BarItem myBar = myPane.AddBar( "My Bar", list, Color.Tomato );
            myBar.Bar.Fill = fill;
            myPane.XAxis.Type = AxisType.Ordinal;
            //myPane.YAxis.Type = AxisType.Text;
            //myPane.YAxis.TextLabels = ystr;
            //myPane.ClusterScaleWidth = 1;

            //myPane.AxisChange( this.CreateGraphics() );

            #endif

            #if false	// GradientByZ dual bars
            myPane = new GraphPane( new RectangleF(0,0,300,400), "Title", "X Label", "Y Label" );

            double[] xx = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            double[] yy = { 1, 2, 3, 4, 5, 4, 3, 2, 1, 2 };
            double[] yy2 = { 4, 5, 7, 8, 1, 3, 5, 2, 4, 9 };
            double[] zz = { 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 };
            double[] zz2 = { 5, 1, 4, 2, 3, 4, 2, 1, 5, 5 };
            PointPairList list = new PointPairList( xx, yy, zz );
            PointPairList list2 = new PointPairList( xx, yy2, zz2 );

            Color[] colors = { Color.Red, Color.Green, Color.Blue,
                                 Color.Yellow, Color.Orange };
            Fill fill = new Fill( colors );
            fill.Type = FillType.GradientByZ;
            fill.RangeMin = 1;
            fill.RangeMax = 5;

            BarItem myBar = myPane.AddBar( "My Bar", list, Color.Tomato );
            myBar.Bar.Fill = fill;
            BarItem myBar2 = myPane.AddBar( "My Bar 2", list2, Color.Tomato );
            myBar2.Bar.Fill = fill;
            myPane.XAxis.Type = AxisType.Ordinal;
            myPane.MinBarGap = 0.1f;
            //myPane.MinClusterGap = 0;
            myPane.AxisChange( this.CreateGraphics() );

            #endif

            #if false	// stacked bars

            Random rand = new Random();

            myPane = new GraphPane();
            //			myPane.Title.Text = "My Title";
            //			myPane.XAxis.Title.Text = "X Axis";
            //			myPane.YAxis.Title.Text = "Y Axis";

            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();
            PointPairList list3 = new PointPairList();
            PointPairList list4 = new PointPairList();

            for ( int i=1; i<5; i++ )
            {
                double y = (double) i;
                double x1 = 100.0 + rand.NextDouble() * 100.0;
                double x2 = 100.0 + rand.NextDouble() * 100.0;
                double x3 = 100.0 + rand.NextDouble() * 100.0;
                double x4 = 100.0 + rand.NextDouble() * 100.0;

                list1.Add( x1, y );
                list2.Add( x2, y );
                list3.Add( x3, y );
                list4.Add( x4, y );
            }

            BarItem bar1 = myPane.AddBar( "Bar 1", list1, Color.Red );
            BarItem bar2 = myPane.AddBar( "Bar 2", list2, Color.Blue );
            BarItem bar3 = myPane.AddBar( "Bar 3", list3, Color.Green );
            BarItem bar4 = myPane.AddBar( "Bar 4", list4, Color.Beige );

            myPane.BarBase = BarBase.Y;
            myPane.BarType = BarType.Stack;

            myPane.AxisChange( this.CreateGraphics() );

            this.CreateStackBarLabels( myPane );
            #endif

            #if false	// Bars and Dates

            //			Color color = Color.FromArgb( 123, 45, 67, 89 );
            //			HSBColor hsbColor = new HSBColor( color );
            //			Color color2 = hsbColor;

            Random rand = new Random();

            myPane = new GraphPane();
            myPane.Title.Text = "My Title";
            myPane.XAxis.Title.Text = "X Axis";
            myPane.YAxis.Title.Text = "Y Axis";
            //myPane.XAxis.Type = AxisType.Ordinal;
            //myPane.XAxis.Type = AxisType.Date;
            //myPane.ClusterScaleWidth = 0.75 / 1440.0;
            //myPane.XAxis.MinorStep = 1;
            //myPane.XAxis.MinorUnit = DateUnit.Minute;

            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();

            for ( int i=1; i<10; i++ )
            {
                //double x = new XDate( 1995, 5, 10, 12, i+1, 0 );
                double x = (double) i;
                double y1 = rand.NextDouble() * 100.0;
                double y2 = rand.NextDouble() * 100.0;

                list1.Add( x-0.25, y1, 0 );
                list2.Add( x+0.17, y2, 0 );
            }

            //myPane.AddCurve( "junk", list1, Color.Green );

            HiLowBarItem bar1 = myPane.AddHiLowBar( "Bar 1", list1, Color.Red );
            //bar1.Bar.Border.IsVisible = false;
            bar1.Bar.Size = 15;
            //bar1.Bar.Fill = new Fill( Color.Red );
            HiLowBarItem bar2 = myPane.AddHiLowBar( "Bar 2", list2, Color.Blue );
            //bar2.Bar.Border.IsVisible = false;
            //bar2.Bar.Fill = new Fill( Color.Blue );
            bar2.Bar.Size = 10;

            MasterPane mPane = new MasterPane();
            mPane.Add( myPane );

            myPane.AxisChange( this.CreateGraphics() );

            //this.CreateBarLabels(mPane);
            #endif

            #if false	// bar test with no gap
            myPane = new GraphPane( new Rectangle( 40, 40, 600, 300 ),
                "Score Report", "", "" );
            // Make up some random data points
            string[] labels = { "" };
            double[] y = { 800, 900 };
            double[] y2 = { 500 };

            // Generate a red bar with "Curve 1" in the legend
            BarItem myBar = myPane.AddBar( null, y, null, Color.RoyalBlue );

            // Generate a blue bar with "Curve 2" in the legend
            myBar = myPane.AddBar( null, y2, null, Color.Red );

            // Draw the X tics between the labels instead of at the labels
            myPane.YAxis.IsTicsBetweenLabels = true;

            // Set the XAxis labels
            myPane.YAxis.TextLabels = labels;
            // Set the XAxis to Text type
            myPane.YAxis.Type = AxisType.Text;
            // Fill the Axis and Pane backgrounds
            myPane.Chart.Fill = new Fill( Color.White,
                Color.FromArgb( 255, 255, 166), 90F );
            myPane.PaneFill = new Fill( Color.FromArgb( 250, 250, 255) );

            myPane.BarBase = BarBase.Y;

            myPane.MinBarGap = 0;
            myPane.MinClusterGap = 1;

            // Tell ZedGraph to refigure the
            // axes since the data have changed
            myPane.AxisChange( CreateGraphics() );
            #endif

            #if false	// Standard Sample Graph
            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "Wacky Widget Company\nProduction Report",
                "Time, Days\n(Since Plant Construction Startup)",
                "Widget Production\n(units/hour)" );
            SetSize();

            // Set the titles and axis labels
            myPane.Title.Text = "Wacky Widget Company\nProduction Report";
            myPane.XAxis.Title.Text = "Time, Days\n(Since Plant Construction Startup)";
            myPane.YAxis.Title.Text = "Widget Production\n(units/hour)";

            LineItem curve;

            // Set up curve "Larry"
            double[] x = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
            double[] y = { 20, 10, 50, 25, 35, 75, 90, 40, 33, 50 };
            // Use green, with circle symbols
            curve = myPane.AddCurve( "Larry", x, y, Color.Green, SymbolType.Circle );
            curve.Line.Width = 1.5F;
            // Fill the area under the curve with a white-green gradient
            curve.Line.Fill = new Fill( Color.White, Color.FromArgb( 60, 190, 50), 90F );
            // Make it a smooth line
            curve.Line.IsSmooth = true;
            curve.Line.SmoothTension = 0.6F;
            // Fill the symbols with white
            curve.Symbol.Fill = new Fill( Color.White );
            curve.Symbol.Size = 10;

            // Second curve is "moe"
            double[] x3 = { 150, 250, 400, 520, 780, 940 };
            double[] y3 = { 5.2, 49.0, 33.8, 88.57, 99.9, 36.8 };
            // Use a red color with triangle symbols
            curve = myPane.AddCurve( "Moe", x3, y3, Color.FromArgb( 200, 55, 135), SymbolType.Triangle );
            curve.Line.Width = 1.5F;
            // Fill the area under the curve with semi-transparent pink using the alpha value
            curve.Line.Fill = new Fill( Color.White, Color.FromArgb( 160, 230, 145, 205), 90F );
            // Fill the symbols with white
            curve.Symbol.Fill = new Fill( Color.White );
            curve.Symbol.Size = 10;

            // Third Curve is a bar, called "Wheezy"
            double[] x4 = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
            double[] y4 = { 30, 45, 53, 60, 75, 83, 84, 79, 71, 57 };
            BarItem bar = myPane.AddBar( "Wheezy", x4, y4, Color.SteelBlue );
            // Fill the bars with a RosyBrown-White-RosyBrown gradient
            bar.Bar.Fill = new Fill( Color.RosyBrown, Color.White, Color.RosyBrown );

            // Fourth curve is a bar
            double[] x2 = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
            double[] y2 = { 10, 15, 17, 20, 25, 27, 29, 26, 24, 18 };
            bar = myPane.AddBar( "Curly", x2, y2, Color.RoyalBlue );
            // Fill the bars with a RoyalBlue-White-RoyalBlue gradient
            bar.Bar.Fill = new Fill( Color.RoyalBlue, Color.White, Color.RoyalBlue );

            // Fill the pane background with a gradient
            myPane.PaneFill = new Fill( Color.WhiteSmoke, Color.Lavender, 0F );
            // Fill the axis background with a gradient
            myPane.Chart.Fill = new Fill( Color.FromArgb( 255, 255, 245),
                Color.FromArgb( 255, 255, 190), 90F );

            // Make each cluster 100 user scale units wide.  This is needed because the X Axis
            // type is Linear rather than Text or Ordinal
            myPane.ClusterScaleWidth = 100;
            // Bars are stacked
            myPane.BarType = BarType.Stack;

            // Enable the X and Y axis grids
            myPane.XAxis.IsShowGrid = true;
            myPane.YAxis.IsShowGrid = true;

            // Manually set the scale maximums according to user preference
            myPane.XAxis.Max = 1200;
            myPane.YAxis.Max = 120;

            // Add a text item to decorate the graph
            TextItem text = new TextItem("First Prod\n21-Oct-93", 175F, 80.0F );
            // Align the text such that the Bottom-Center is at (175, 80) in user scale coordinates
            text.Location.AlignH = AlignH.Center;
            text.Location.AlignV = AlignV.Bottom;
            text.FontSpec.Fill = new Fill( Color.White, Color.PowderBlue, 45F );
            text.FontSpec.StringAlignment = StringAlignment.Near;
            myPane.GraphItemList.Add( text );

            // Add an arrow pointer for the above text item
            ArrowItem arrow = new ArrowItem( Color.Black, 12F, 175F, 77F, 100F, 45F );
            arrow.Location.CoordinateFrame = CoordType.AxisXYScale;
            myPane.GraphItemList.Add( arrow );

            // Add a another text item to to point out a graph feature
            text = new TextItem("Upgrade", 700F, 50.0F );
            // rotate the text 90 degrees
            text.FontSpec.Angle = 90;
            // Align the text such that the Right-Center is at (700, 50) in user scale coordinates
            text.Location.AlignH = AlignH.Right;
            text.Location.AlignV = AlignV.Center;
            // Disable the border and background fill options for the text
            text.FontSpec.Fill.IsVisible = false;
            text.FontSpec.Border.IsVisible = false;
            myPane.GraphItemList.Add( text );

            // Add an arrow pointer for the above text item
            arrow = new ArrowItem( Color.Black, 15, 700, 53, 700, 80 );
            arrow.Location.CoordinateFrame = CoordType.AxisXYScale;
            arrow.PenWidth = 2.0F;
            myPane.GraphItemList.Add( arrow );

            // Add a text "Confidential" stamp to the graph
            text = new TextItem("Confidential", 0.85F, -0.03F );
            // use AxisFraction coordinates so the text is placed relative to the ChartRect
            text.Location.CoordinateFrame = CoordType.AxisFraction;
            // rotate the text 15 degrees
            text.FontSpec.Angle = 15.0F;
            // Text will be red, bold, and 16 point
            text.FontSpec.FontColor = Color.Red;
            text.FontSpec.IsBold = true;
            text.FontSpec.Size = 16;
            // Disable the border and background fill options for the text
            text.FontSpec.Border.IsVisible = false;
            text.FontSpec.Fill.IsVisible = false;
            // Align the text such the the Left-Bottom corner is at the specified coordinates
            text.Location.AlignH = AlignH.Left;
            text.Location.AlignV = AlignV.Bottom;
            myPane.GraphItemList.Add( text );

            // Add a BoxItem to show a colored band behind the graph data
            BoxItem box = new BoxItem( new RectangleF( 0, 110, 1200, 10 ),
                Color.Empty, Color.FromArgb( 225, 245, 225) );
            box.Location.CoordinateFrame = CoordType.AxisXYScale;
            // Align the left-top of the box to (0, 110)
            box.Location.AlignH = AlignH.Left;
            box.Location.AlignV = AlignV.Top;
            // place the box behind the axis items, so the grid is drawn on top of it
            box.ZOrder = ZOrder.E_BehindAxis;
            myPane.GraphItemList.Add( box );

            // Add some text inside the above box to indicate "Peak Range"
            TextItem myText = new TextItem( "Peak Range", 1170, 105 );
            myText.Location.CoordinateFrame = CoordType.AxisXYScale;
            myText.Location.AlignH = AlignH.Right;
            myText.Location.AlignV = AlignV.Center;
            myText.FontSpec.IsItalic = true;
            myText.FontSpec.IsBold = false;
            myText.FontSpec.Fill.IsVisible = false;
            myText.FontSpec.Border.IsVisible = false;
            myPane.GraphItemList.Add( myText );

            // Calculate the Axis Scale Ranges
            Graphics g = this.CreateGraphics();
            myPane.AxisChange( g );
            g.Dispose();
            #endif

            #if false	// MasterPane
            master = new MasterPane( "ZedGraph MasterPane Example", new Rectangle( 10, 10, 10, 10 ) );

            master.PaneFill = new Fill( Color.White, Color.MediumSlateBlue, 45.0F );
            //master.IsShowTitle = true;

            //master.MarginAll = 10;
            //master.InnerPaneGap = 10;
            //master.Legend.IsVisible = true;
            //master.Legend.Position = LegendPos.TopCenter;

            /*
            TextItem text = new TextItem( "Priority", 0.88F, 0.12F );
            text.Location.CoordinateFrame = CoordType.PaneFraction;

            text.FontSpec.Angle = 15.0F;
            text.FontSpec.FontColor = Color.Red;
            text.FontSpec.IsBold = true;
            text.FontSpec.Size = 16;
            text.FontSpec.Border.IsVisible = false;
            text.FontSpec.Border.Color = Color.Red;
            text.FontSpec.Fill.IsVisible = false;

            text.Location.AlignH = AlignH.Left;
            text.Location.AlignV = AlignV.Bottom;
            master.GraphItemList.Add( text );

            text = new TextItem("DRAFT", 0.5F, 0.5F );
            text.Location.CoordinateFrame = CoordType.PaneFraction;

            text.FontSpec.Angle = 30.0F;
            text.FontSpec.FontColor = Color.FromArgb( 70, 255, 100, 100 );
            text.FontSpec.IsBold = true;
            text.FontSpec.Size = 100;
            text.FontSpec.Border.IsVisible = false;
            text.FontSpec.Fill.IsVisible = false;

            text.Location.AlignH = AlignH.Center;
            text.Location.AlignV = AlignV.Center;
            text.ZOrder = ZOrder.A_InFront;

            master.GraphItemList.Add( text );
            */
            ColorSymbolRotator rotator = new ColorSymbolRotator();

            for ( int j=0; j<6; j++ )
            {
                // Create a new graph with topLeft at (40,40) and size 600x400
                GraphPane myPaneT = new GraphPane( new Rectangle( 40, 40, 600, 400 ),
                    "Case #" + (j+1).ToString(),
                    "Time, Days",
                    "Rate, m/s" );

                myPaneT.PaneFill = new Fill( Color.White, Color.LightYellow, 45.0F );
                myPaneT.BaseDimension = 6.0F;

                // Make up some data arrays based on the Sine function
                double x, y;
                PointPairList list = new PointPairList();
                for ( int i=0; i<36; i++ )
                {
                    x = (double) i + 5;
                    y = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 + (double) j ) );
                    list.Add( x, y );
                }

                LineItem myCurve = myPaneT.AddCurve( "Type " + j.ToString(),
                    list, rotator.NextColor, rotator.NextSymbol );
                myCurve.Symbol.Fill = new Fill( Color.White );

                master.Add( myPaneT );
            }

            myPane = master[0];

            Graphics g = this.CreateGraphics();

            //master.AutoPaneLayout( g, PaneLayout.ExplicitRow32 );
            //master.AutoPaneLayout( g, 2, 4 );
            master.AutoPaneLayout( g, false, new int[] { 1, 3, 2 }, new float[] { 2, 1, 3 } );
            master.AxisChange( g );

            g.Dispose();
            #endif

            #if false	// MasterPane - Single Pane
            master = new MasterPane( "ZedGraph MasterPane Single Pane Example", new Rectangle( 10, 10, 10, 10 ) );

            master.Fill = new Fill( Color.White, Color.MediumSlateBlue, 45.0F );

            // Create a new graph with topLeft at (40,40) and size 600x400
            GraphPane myPaneT = new GraphPane( new Rectangle( 40, 40, 600, 400 ),
                "Case 1",
                "Time, Days",
                "Rate, m/s" );

            myPaneT.Fill = new Fill( Color.White, Color.LightYellow, 45.0F );
            myPaneT.BaseDimension = 6.0F;

            // Make up some data arrays based on the Sine function
            double x, y;
            PointPairList list = new PointPairList();
            for ( int i=0; i<36; i++ )
            {
                x = (double) i + 5;
                y = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 ) );
                list.Add( x, y );
            }

            LineItem myCurve = myPaneT.AddCurve( "Type 1",
                list, Color.Blue, SymbolType.Circle );
            myCurve.Symbol.Fill = new Fill( Color.White );

            master.Add( myPaneT );

            Graphics g = this.CreateGraphics();

            master.Title.IsVisible = false;
            master.Margin.All = 0;
            //master.AutoPaneLayout( g, PaneLayout.ExplicitRow32 );
            //master.AutoPaneLayout( g, 2, 4 );
            master.AutoPaneLayout( g );
            //master.AutoPaneLayout( g, false, new int[] { 1, 3, 2 }, new float[] { 2, 1, 3 } );
            master.AxisChange( g );

            g.Dispose();
            #endif

            #if false	// Pie
            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "2004 ZedGraph Sales by Region\n($M)",
                "",
                "" );

            myPane.FontSpec.IsItalic = true;
            myPane.FontSpec.Size = 24f;
            myPane.FontSpec.Family = "Times";
            myPane.PaneFill = new Fill( Color.White, Color.Goldenrod, 45.0f );
            myPane.Chart.Fill.Type = FillType.None;
            myPane.Legend.Position = LegendPos.Float ;
            myPane.Legend.Location = new Location( 0.95f, 0.15f, CoordType.PaneFraction,
                                AlignH.Right, AlignV.Top );
            myPane.Legend.FontSpec.Size = 10f;
            myPane.Legend.IsHStack = false;

            PieItem segment1 = myPane.AddPieSlice( 20, Color.Navy, Color.White, 45f, 0, "North" );
            PieItem segment3 = myPane.AddPieSlice( 30, Color.Purple, Color.White, 45f, .0, "East" );
            PieItem segment4 = myPane.AddPieSlice( 10.21, Color.LimeGreen, Color.White, 45f, 0, "West" );
            PieItem segment2 = myPane.AddPieSlice( 40, Color.SandyBrown, Color.White, 45f, 0.2, "South" );
            PieItem segment6 = myPane.AddPieSlice( 250, Color.Red, Color.White, 45f, 0, "Europe" );
            PieItem segment7 = myPane.AddPieSlice( 50, Color.Blue, Color.White, 45f, 0.2, "Pac Rim" );
            PieItem segment8 = myPane.AddPieSlice( 400, Color.Green, Color.White, 45f, 0, "South America" );
            PieItem segment9 = myPane.AddPieSlice( 50, Color.Yellow, Color.White, 45f, 0.2, "Africa" );

            segment2.LabelDetail.FontSpec.FontColor = Color.Red ;

            CurveList curves = myPane.CurveList ;
            double total = 0 ;
            for ( int x = 0 ; x <  curves.Count ; x++ )
                total += ((PieItem)curves[x]).Value ;

            TextItem text = new TextItem( "Total 2004 Sales\n" + "$" + total.ToString () + "M",
                                0.18F, 0.40F, CoordType.PaneFraction );
            text.Location.AlignH = AlignH.Center;
            text.Location.AlignV = AlignV.Bottom;
            text.FontSpec.Border.IsVisible = false ;
            text.FontSpec.Fill = new Fill( Color.White, Color.FromArgb( 255, 100, 100 ), 45F );
            text.FontSpec.StringAlignment = StringAlignment.Center ;
            myPane.GraphItemList.Add( text );

            TextItem text2 = new TextItem( text );
            text2.FontSpec.Fill = new Fill( Color.Black );
            text2.Location.X += 0.008f;
            text2.Location.Y += 0.01f;
            myPane.GraphItemList.Add( text2 );

            myPane.AxisChange( this.CreateGraphics() );
            #endif

            #if false	// simple pie
            myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                "People Signed Up",
                "",
                "" );
            // Create some pie slices
            PieItem segment1 = myPane.AddPieSlice(8, Color.Green, .3, "Signed Up");
            PieItem segment2 = myPane.AddPieSlice(5,Color.Red, 0.0, "Still Needed");

            //segment1.FontSpec = new FontSpec("GenericSansSerif", 35, Color.Black, true, false, false);
            // Sum up the values
            CurveList curves = myPane.CurveList;
            double total = 0;
            for (int x = 0; x < curves.Count; x++)
                total += ((PieItem)curves[x]).Value;

            myPane.PaneBorder.IsVisible = false;
            myPane.Legend.Border.IsVisible = false;
            myPane.Legend.Position = LegendPos.TopCenter;

            //			ArrowItem arrow = new ArrowItem( (float) new XDate(2007,1,1), 0, (float) new XDate(2007,1,1), 50 );

            #endif

            #if false	// Commerical Sales Graph
            myPane = new GraphPane( new RectangleF(0,0,10,10),
                        "Sales Growth Compared to\nActual Sales by Store Size - Rank Order Low to High",
                        "", "" );
            myPane.MarginAll = 20;
            myPane.FontSpec.Size = 10;
            myPane.Legend.Position = LegendPos.BottomCenter;
            myPane.Legend.FontSpec.Size = 7;

            Random rand = new Random();
            double y1 = 184;
            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();
            PointPairList trendList = new PointPairList();
            PointPairList projList = new PointPairList();
            string[] labels = new string[26];

            for ( int i=0; i<26; i++ )
            {
                double h1 = rand.NextDouble() * 10 - 2;
                double h2 = rand.NextDouble() * 10 - 2;
                double h3 = rand.NextDouble() * 8;
                double y2 = y1 + ( rand.NextDouble() * 2 - 1 );

                trendList.Add( i + 1.0 - 0.2, y1 );
                trendList.Add( i + 1.0 + 0.2, y2 );
                list1.Add( (double) i, y1+h1, y1 );
                list2.Add( (double) i, y2+h2, y2 );
                projList.Add( (double) i + 1.0 - 0.35, y1 + h3 );
                projList.Add( (double) i + 1.0 + 0.35, y1 + h3 );
                projList.Add( PointPair.Missing, PointPair.Missing );

                labels[i] = "Store " + (i+1).ToString();

                y1 += rand.NextDouble() * 4.0;
            }

            PointPairList minTargList = new PointPairList();
            minTargList.Add( 0.7, 218 );
            minTargList.Add( 26.3, 218 );
            PointPairList prefTargList = new PointPairList();
            prefTargList.Add( 0.7, 228 );
            prefTargList.Add( 26.3, 228 );

            LineItem minCurve = myPane.AddCurve("Minimum Target", minTargList, Color.Green, SymbolType.None );
            minCurve.Line.Width = 3.0f;
            minCurve.IsOverrideOrdinal = true;
            LineItem prefCurve = myPane.AddCurve("Preferred Target", prefTargList, Color.Blue, SymbolType.None );
            prefCurve.Line.Width = 3.0f;
            prefCurve.IsOverrideOrdinal = true;

            LineItem projCurve = myPane.AddCurve( "Projected Sales", projList, Color.Orange, SymbolType.None );
            projCurve.IsOverrideOrdinal = true;
            projCurve.Line.Width = 3.0f;

            LineItem myCurve = myPane.AddCurve( "Trendline", trendList,
                            Color.FromArgb( 50, 50, 50 ), SymbolType.None );
            myCurve.Line.Width = 2.5f;
            myCurve.Line.IsSmooth = true;
            myCurve.Line.SmoothTension = 0.3f;
            myCurve.IsOverrideOrdinal = true;

            BarItem myBar = myPane.AddBar( "Store Growth", list1, Color.Black );
            //myBar.Bar.Fill = new Fill( Color.Black );
            BarItem myBar2 = myPane.AddBar( "Average Growth", list2, Color.LightGray );
            //myBar2.Bar.Fill = new Fill( Color.LightGray );

            myPane.XAxis.Type = AxisType.Text;
            myPane.XAxis.TextLabels = labels;
            myPane.XAxis.Scale.FontSpec.Angle = -90;
            myPane.XAxis.Scale.FontSpec.Size = 8;
            myPane.XAxis.Scale.FontSpec.IsBold = true;
            myPane.XAxis.IsTicsBetweenLabels = true;
            myPane.XAxis.IsInsideTic = false;
            myPane.XAxis.IsOppositeTic = false;
            myPane.XAxis.IsMinorInsideTic = false;
            myPane.XAxis.IsMinorOppositeTic = false;

            myPane.YAxis.Scale.FontSpec.Size = 8;
            myPane.YAxis.Scale.FontSpec.IsBold = true;
            myPane.YAxis.IsShowGrid = true;
            myPane.YAxis.GridDashOn = 1.0f;
            myPane.YAxis.GridDashOff = 0.0f;

            myPane.BarType = BarType.ClusterHiLow;

            myPane.AxisChange( this.CreateGraphics() );
            myPane.YAxis.MinorStep = myPane.YAxis.Step;

            #endif

            #if false	// Basic curve test - Images as symbols
            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<10; i++ )
            {
                double x = (double) i;
                double y = Math.Sin( x / 8.0 );
                list.Add( x, y );
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );

            Bitmap bm = new Bitmap( @"c:\windows\winnt256.bmp" );
            Image image = Image.FromHbitmap( bm.GetHbitmap() );

            myCurve.Line.IsVisible = false;
            myCurve.Symbol.Type = SymbolType.Square;
            myCurve.Symbol.Size = 16;
            myCurve.Symbol.Border.IsVisible = false;
            myCurve.Symbol.Fill = new Fill( image, WrapMode.Clamp );

            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 359;
            trackBar1.Value = 0;

            #endif

            #if false	// Stick Item Test
            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();
            for ( int i=0; i<100; i++ )
            {
                double x = (double) i;
                double y = Math.Sin( i / 8.0 );
                double z = Math.Abs(Math.Cos( i / 8.0 )) * y;
                list.Add( x, y, z );
            }

            StickItem myCurve = myPane.AddStick( "curve", list, Color.Blue );
            myCurve.Line.Width = 2.0f;
            myPane.XAxis.IsShowGrid = true;
            myPane.XAxis.Max = 100;

            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 359;
            trackBar1.Value = 0;

            #endif

            #if false	// Basic curve test - Dual Y axes

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            myPane.Y2Axis.Title.Text = "My Y2 Axis";

            PointPairList list = new PointPairList();
            PointPairList list2 = new PointPairList();

            for ( int i=0; i<100; i++ )
            {
                double x = (double) i;
                double y = Math.Sin( i / 8.0 ) * 100000 + 150000;
                double y2 = Math.Sin( i / 3.0 ) * 300 - 400;
                list.Add( x, y );
                list2.Add( x, y2 );
                //double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );
            LineItem myCurve2 = myPane.AddCurve( "curve2", list2, Color.Red, SymbolType.Diamond );
            myCurve2.IsY2Axis = true;

            myPane.Y2Axis.IsVisible = true;

            AlignYZeroLines( myPane, 12 );
            myPane.YAxis.IsMinorOppositeTic = false;
            myPane.Y2Axis.IsMinorOppositeTic = false;

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test - Multi-Y axes

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            myPane.AddYAxis( "Another Y Axis" );
            myPane.AddY2Axis( "Another Y2 Axis" );
            myPane.Y2Axis.Title.Text = "My Y2 Axis";
            myPane.Y2AxisList[0].IsVisible = true;
            myPane.Y2AxisList[1].IsVisible = true;

            PointPairList list = new PointPairList();

            for ( int i=0; i<100; i++ )
            {
                //double x = (double) i;
                double x = new XDate( 2001, 1, i*3 );
                double y = Math.Sin( i / 8.0 ) * 100000 + 100001;
                list.Add( x, y );
                double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );

            myCurve.YAxisIndex = 1;

            myPane.XAxis.IsSkipLastLabel = false;
            myPane.XAxis.Type = AxisType.DateAsOrdinal;
            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test - Date Axis w/ Time Span

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<100; i++ )
            {
                double x = (double) i/123.0;
                //double x = new XDate( 0, 0, i, i*3, i*2, i );
                double y = Math.Sin( i / 8.0 ) * 1 + 1;
                list.Add( x, y );
                double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );

            myPane.XAxis.IsSkipLastLabel = false;
            //myPane.XAxis.IsPreventLabelOverlap = false;
            myPane.XAxis.ScaleFormat = "[d].[h]:[m]:[s]";
            myPane.XAxis.Type = AxisType.Date;
            myPane.AxisChange( this.CreateGraphics() );

            myPane.YAxis.ScaleFormat = "0.0'%'";
            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            myPane.PaneFill = new Fill( Color.FromArgb( 100, Color.Blue ), Color.FromArgb( 100, Color.White ), 45.0f );

            #endif

            #if false	// Basic curve test - DateAsOrdinal

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<100; i++ )
            {
                //double x = (double) i;
                double x = new XDate( 2001, 1, i*3 );
                double y = Math.Sin( i / 8.0 ) * 100000 + 100001;
                list.Add( x, y );
                double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );

            myPane.XAxis.IsSkipLastLabel = false;
            myPane.XAxis.IsPreventLabelOverlap = false;
            myPane.XAxis.ScaleFormat = ZedGraph.Axis.Default.FormatDayDay;
            myPane.XAxis.Type = AxisType.DateAsOrdinal;
            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test - Linear Axis

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<20; i++ )
            {
                double x = (double) i;
                double y = Math.Sin( x / 8.0 );
                double z = Math.Abs(Math.Cos( i / 8.0 )) * y;

                list.Add( x, y, z );
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );

            //myPane.XAxis.Min = 1;
            //myPane.XAxis.Max = 100;
            //myPane.XAxis.IsReverse = true;
            //myPane.XAxis.Type = AxisType.Log;

            //RectangleF rect = new RectangleF( 3, 0.7, 8, 0.2 );
            myPane.AxisChange( this.CreateGraphics() );

            BoxItem m_selectionBox = new BoxItem(); // rect );
            m_selectionBox.Border.Color = Color.Orange;
            m_selectionBox.Border.IsVisible = true;
            m_selectionBox.Fill.Color = Color.LightYellow;
            m_selectionBox.Fill.Type = FillType.Solid;
            m_selectionBox.Fill.RangeMin = 1.0;
            m_selectionBox.Fill.RangeMax = 1.0;
            m_selectionBox.Fill.IsVisible = true;

            m_selectionBox.Location = new Location(
                (float)3,
                (float)myPane.YAxis.Max,
                (float)(8 - 3),
                (float)myPane.YAxis.Max - (float)myPane.YAxis.Min,
                CoordType.AxisXYScale,
                AlignH.Left,
                AlignV.Top);

            m_selectionBox.IsClippedToChartRect = true;
            m_selectionBox.ZOrder = ZOrder.E_BehindAxis;
            m_selectionBox.IsVisible = true;

            myPane.GraphItemList.Add( m_selectionBox );

            #endif

            #if false	// Box and Whisker diagram

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            // Throw some data points on the chart for good looks
            PointPairList list = new PointPairList();
            for ( int i=0; i<20; i++ )
            {
                double x = (double) i * 5;
                double y = Math.Sin( x / 8.0 );
                list.Add( x, y );
            }
            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );
            myCurve.Line.IsVisible = false;

            // Horizontal box and whisker chart
            // yval is the vertical position of the box & whisker
            double yval = 0.3;
            // pct5 = 5th percentile value
            double pct5 = 5;
            // pct25 = 25th percentile value
            double pct25 = 40;
            // median = median value
            double median = 55;
            // pct75 = 75th percentile value
            double pct75 = 80;
            // pct95 = 95th percentile value
            double pct95 = 95;

            // Draw the box
            PointPairList list2 = new PointPairList();
            list2.Add( pct25, yval, median );
            list2.Add( median, yval, pct75 );
            HiLowBarItem myBar = myPane.AddHiLowBar( "box", list2, Color.Black );
            // set the size of the box (in points, scaled to graph size)
            myBar.Bar.Size = 20;
            myBar.Bar.Fill.IsVisible = false;
            myPane.BarBase = BarBase.Y;

            // Draw the whiskers
            double[] xwhisk = { pct5, pct25, PointPair.Missing, pct75, pct95 };
            double[] ywhisk = { yval, yval, yval, yval, yval };
            PointPairList list3 = new PointPairList();
            list3.Add( xwhisk, ywhisk );
            LineItem mywhisk = myPane.AddCurve( "whisker", list3, Color.Black, SymbolType.None );

            myPane.AxisChange( this.CreateGraphics() );

            #endif

            #if false	// Basic curve test - Linear Axis with Many Points

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<100000; i++ )
            {
                double x = (double) i;
                double y = Math.Sin( x / 8.0 );
                double z = Math.Abs(Math.Cos( i / 8.0 )) * y;

                list.Add( x, y, z );
            }

            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.HDash );
            myCurve.Symbol.IsVisible = false;
            //myPane.XAxis.Min = 1;
            //myPane.XAxis.Max = 100;
            //myPane.XAxis.IsReverse = true;
            //myPane.XAxis.Type = AxisType.Log;

            //RectangleF rect = new RectangleF( 3, 0.7, 8, 0.2 );
            Graphics g = this.CreateGraphics();
            myPane.AxisChange( g );
            SetSize();

            int startTick = Environment.TickCount;

            myPane.Draw( g );

            int endTick = Environment.TickCount;

            MessageBox.Show( "ticks = " + ( endTick - startTick ).ToString() );
            #endif

            #if false	// Gantt Chart
            myPane = new GraphPane();

            myPane.Title.Text = "Gantt Chart";
            myPane.XAxis.Title.Text = "Date";
            myPane.YAxis.Title.Text = "Project";

            myPane.XAxis.Type = AxisType.Date;
            myPane.YAxis.Type = AxisType.Text;
            myPane.BarBase = BarBase.Y;

            string[] labels = { "Project 1", "Project 2" };
            myPane.YAxis.TextLabels = labels;
            myPane.YAxis.IsTicsBetweenLabels = true;

            // First, define all the bars that you want to be red
            PointPairList ppl = new PointPairList();
            XDate start = new XDate( 2005, 10, 31 );
            XDate end = new XDate( 2005, 11, 15 );
            // x is start of bar, y is project number, z is end of bar
            // Define this first one using start/end variables for illustration
            ppl.Add( start, 1.0, end );
            // add another red bar, assigned to project 2
            // Didn't use start/end variables here, but it's the same concept
            ppl.Add( new XDate( 2005, 12, 16 ), 2.0, new XDate( 2005, 12, 31 ) );
            HiLowBarItem myBar = myPane.AddHiLowBar( "job 1", ppl, Color.Red );
            // This tells the bar that we want to manually define the Y position
            // Y is AxisType.Text, which is ordinal, so a Y value of 1.0 goes with the first label,
            // 2.0 with the second, etc.
            myBar.IsOverrideOrdinal = true;
            myBar.Bar.Fill = new Fill( Color.Red, Color.White, Color.Red, 90.0f );
            // This size is the width of the bar
            myBar.Bar.Size = 20f;

            // Now, define all the bars that you want to be Green
            ppl = new PointPairList();
            ppl.Add( new XDate( 2005, 11,16 ), 2.0, new XDate( 2005, 11, 26 ) );
            myBar = myPane.AddHiLowBar( "job 2", ppl, Color.Green );
            myBar.IsOverrideOrdinal = true;
            myBar.Bar.Fill = new Fill( Color.Green, Color.White, Color.Green, 90.0f );
            myBar.Bar.Size = 20f;

            // Define all the bars that you want to be blue
            ppl = new PointPairList();
            ppl.Add( new XDate( 2005, 11, 27 ), 1.0, new XDate( 2005, 12, 15 ) );
            myBar = myPane.AddHiLowBar( "job 3", ppl, Color.Blue );
            myBar.IsOverrideOrdinal = true;
            myBar.Bar.Fill = new Fill( Color.Blue, Color.White, Color.Blue, 90.0f );
            myBar.Bar.Size = 20f;
            #endif

            #if false		// DeSerialize
                DeSerialize( out myPane, @"c:\temp\myZedGraphFile" );

                trackBar1.Minimum = 0;
                trackBar1.Maximum = 100;
                trackBar1.Value = 50;

                myPane.AxisChange( this.CreateGraphics() );
            #endif

            #if false			// spline test

            myPane = new GraphPane();
            PointPairList ppl = new PointPairList();

            ppl.Add( 0, 713 );
            ppl.Add( 7360, 333 );
            ppl.Add( 10333.333, 45.333336 );
            ppl.Add( 11666.667, 5 );
            ppl.Add( 12483.333, 45.333336 );
            ppl.Add( 13600, 110 );
            ppl.Add( 15800, 184.66667 );
            ppl.Add( 18644.998, 186.33368 );
            ppl.Add( 18770.002, 186.66664 );
            ppl.Add( 18896.666, 187.08336 );
            ppl.Add( 18993.334, 187.50002 );
            ppl.Add( 19098.332, 188.08334 );
            ppl.Add( 19285.002, 189.41634 );
            ppl.Add( 19443.332, 190.83334 );
            ppl.Add( 19633.334, 193.16634 );
            ppl.Add( 19823.336, 196.49983 );
            ppl.Add( 19940.002, 199.16669 );
            ppl.Add( 20143.303, 204.66566 );
            ppl.Add( 20350, 210.91667 );
            ppl.Add( 36000, 713 );

            LineItem curve = myPane.AddCurve( "test", ppl, Color.Green, SymbolType.Default );
            curve.Line.IsSmooth = true;
            curve.Line.SmoothTension = 0.4F;

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;
            #endif

            #if false	// hilowbar test

            myPane = new GraphPane();

            myPane.Title.Text = "Bar Type Sample";
            myPane.XAxis.Title.Text = "Text Axis";
            myPane.YAxis.Title.Text = "Some Data Value";
            myPane.XAxis.Type = AxisType.Text;
            myPane.ClusterScaleWidth = 1.0;
            //myPane.BarType = BarType.Overlay;

            myPane.FontSpec.Size = 18;
            myPane.YAxis.TitleFontSpec.Size = 16;
            myPane.XAxis.TitleFontSpec.Size = 16;

            string[] labels = { "North", "South", "East", "West", "Up", "Down" };
            myPane.XAxis.TextLabels = labels;
            //Random rand = new Random();

            double[] xArray = { 3, 5, 9, 11, 16, 18 };
            double[] xArray2 = { 10, 12, 13, 15, 17, 19 };
            double[] yArray = { 10, 45, 78, 34, 15, 26 };
            double[] yArray2 = { 54, 34, 64, 24, 44, 74 };
            PointPairList list1 = new PointPairList( xArray, yArray );
            PointPairList list2 = new PointPairList( xArray2, yArray2 );
            /*
            for ( int i = 0; i < 6; i++ )
            {
                double x = xArray[i];
                double y1 = rand.NextDouble() * 1.0 + .00001;
                double y2 = rand.NextDouble() * 1.0 + .00001;

                list1.Add( x, y1 );
                list2.Add( x, y2 );
            }
            */
            HiLowBarItem bar1 = myPane.AddHiLowBar( "First", list1, Color.Blue );
            HiLowBarItem bar2 = myPane.AddHiLowBar( "Second", list2, Color.Red );
            //myPane.YAxis.Type = AxisType.Log;
            //myPane.BarType = BarType.ClusterHiLow;
            //myPane.XAxis.Scale.ScaleFormatEvent += new Scale.ScaleFormatHandler( CustomFormatter );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            myPane.AxisChange( this.CreateGraphics() );

            #endif

            #if false	// Basic bar test - Linear

            myPane = new GraphPane();

            myPane.Title.Text = "BarItem Sample (BarType.ClusterHiLow)";
            myPane.XAxis.Title.Text = "Text Axis";
            myPane.YAxis.Title.Text = "Some Data Value";
            myPane.XAxis.Type = AxisType.Text;
            myPane.ClusterScaleWidth = 2.0;
            myPane.BarType = BarType.ClusterHiLow;

            myPane.FontSpec.Size = 18;
            myPane.YAxis.TitleFontSpec.Size = 16;
            myPane.XAxis.TitleFontSpec.Size = 16;

            string[] labels = { "North", "South", "East", "West", "Up", "Down" };
            myPane.XAxis.TextLabels = labels;
            //Random rand = new Random();

            //double[] xArray = { 3, 5, 9, 11, 16, 18 };
            double[] xArray = { 1, 1.8, 3.2, 4, 5, 6 };
            double[] xArray2 = { 10, 12, 13, 15, 17, 19 };
            double[] yArray = { 10, 75, 25, 16, 15, 26 };
            double[] yArray2 = { 54, 62, 44, 24, 44, 74 };
            double[] ylArray2 = { 34, 42, 15, 0, 5, 20 };
            double[] yArray3 = { 54, 62, 44, 24, 34, 74 };
            double[] ylArray3 = { 44, 42, 14, 14, 14, 34 };
            PointPairList list1 = new PointPairList( xArray, yArray, ylArray2 );
            PointPairList list2 = new PointPairList( xArray, yArray2, ylArray2 );
            PointPairList list3 = new PointPairList( xArray, yArray3, ylArray3 );
            /*
            for ( int i = 0; i < 6; i++ )
            {
                double x = xArray[i];
                double y1 = rand.NextDouble() * 1.0 + .00001;
                double y2 = rand.NextDouble() * 1.0 + .00001;

                list1.Add( x, y1 );
                list2.Add( x, y2 );
            }
            */
            //ErrorBarItem bar1 = myPane.AddErrorBar( "First", list3, Color.Blue );
            //bar1.ErrorBar.Symbol.Size = 12;
            //bar1.ErrorBar.PenWidth = 2;
            //HiLowBarItem bar1 = myPane.AddHiLowBar( "First", list3, Color.Blue );
            //bar1.Bar.Size = 20;
            BarItem bar1 = myPane.AddBar( "First", list1, Color.Blue );
            BarItem bar2 = myPane.AddBar( "Second", list2, Color.Red );
            //myPane.YAxis.Type = AxisType.Log;
            //myPane.BarType = BarType.ClusterHiLow;
            //myPane.XAxis.Scale.ScaleFormatEvent += new Scale.ScaleFormatHandler( CustomFormatter );

            myPane.YAxis.IsTitleAtCross = false;

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            myPane.AxisChange( this.CreateGraphics() );

            #endif

            #if false	// Bars - different colors thru IsOverrideOrdinal

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            /*			PointPairList list1 = new PointPairList();
            list1.Add(1,13);
            HiLowBarItem bar1 = myPane.AddHiLowBar( "First", list1, Color.Blue );
            PointPairList list2 = new PointPairList();
            list2.Add(2,22);
            HiLowBarItem bar2 = myPane.AddHiLowBar( "Second", list2, Color.Red );

            bar1.Bar.Size = 30;
            bar1.IsOverrideOrdinal = true;
            bar2.Bar.Size = 30;
            bar2.IsOverrideOrdinal = true;
            */
            PointPairList list1 = new PointPairList();
            list1.Add(1,13);
            BarItem bar1 = myPane.AddBar( "First", list1, Color.Blue );
            PointPairList list2 = new PointPairList();
            list2.Add(2,22);
            BarItem bar2 = myPane.AddBar( "Second", list2, Color.Red );

            bar1.IsOverrideOrdinal = true;
            bar2.IsOverrideOrdinal = true;

            myPane.Legend.Position = LegendPos.TopFlushLeft;

            myPane.BarType = BarType.Overlay;
            myPane.XAxis.Type = AxisType.Text;
            string[] labels = { "Label1", "Label2" };
            myPane.XAxis.TextLabels = labels;
            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test - two text axes

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            double[] y = { 2, 4, 1, 5, 3 };

            LineItem myCurve = myPane.AddCurve( "curve 1", null, y, Color.Blue, SymbolType.Diamond );
            myCurve.IsOverrideOrdinal = true;
            myPane.XAxis.Type = AxisType.Text;
            myPane.YAxis.Type = AxisType.Text;

            string[] xLabels = { "one", "two", "three", "four", "five" };
            string[] yLabels = { "alpha", "bravo", "charlie", "delta", "echo" };
            //myPane.XAxis.TextLabels = xLabels;
            //myPane.YAxis.TextLabels = yLabels;

            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic horizontal bar test

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();

            for ( int i=0; i<5; i++ )
            {
                double y = (double) i;
                //double x = new XDate( 2001, 1, i*3 );
                double x = Math.Sin( i / 8.0 ) * 100000 + 100001;
                list.Add( x, y );
                //double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
            }

            PointPairList list2 = new PointPairList( list );
            PointPairList list3 = new PointPairList( list );
            BarItem myCurve = myPane.AddBar( "curve 1", list, Color.Blue );
            BarItem myCurve2 = myPane.AddBar( "curve 2", list2, Color.Red );
            BarItem myCurve3 = myPane.AddBar( "curve 3", list3, Color.Green );

            //myPane.XAxis.IsSkipLastLabel = false;
            //myPane.XAxis.IsPreventLabelOverlap = false;
            //myPane.XAxis.ScaleFormat = "dd/MM HH:mm";
            //myPane.XAxis.Type = AxisType.Date;
            myPane.BarType = BarType.PercentStack;
            myPane.BarBase = BarBase.Y;
            myPane.AxisChange( this.CreateGraphics() );

            ValueHandler valueHandler = new ValueHandler(myPane, true);
            const float shift = 0;
            int iOrd = 0;
            foreach (CurveItem oCurveItem in myPane.CurveList)
            {
                BarItem oBarItem = oCurveItem as BarItem;
                if (oBarItem != null)
                {
                    PointPairList oPointPairList = oCurveItem.Points as PointPairList;
                    for (int i=0; i<oPointPairList.Count; i++)
                    {
                        double xVal = oPointPairList[i].X;
                        string sLabel = string.Concat(xVal.ToString("F0"), "%");

                        double yVal = valueHandler.BarCenterValue(oCurveItem, oCurveItem.GetBarWidth(myPane), i, oPointPairList[i].Y, iOrd);
                        double x1, x2, y;
                        valueHandler.GetValues( oCurveItem, i, out y, out x1, out x2 );

                        xVal = ( x1 + x2 ) / 2.0;

                        TextItem oTextItem = new TextItem(sLabel, (float) xVal + (xVal > 0 ? shift : -shift ), (float) yVal);
                        oTextItem.Location.CoordinateFrame = CoordType.AxisXYScale;
                        oTextItem.Location.AlignH =  AlignH.Center;
                        oTextItem.Location.AlignV = AlignV.Center;
                        oTextItem.FontSpec.Border.IsVisible = true;
                        oTextItem.FontSpec.Angle = 0;
                        oTextItem.FontSpec.Fill.IsVisible = false;
                        myPane.GraphItemList.Add(oTextItem);
                    }
                }

                iOrd++;
            }

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// vertical bars with labels

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList list = new PointPairList();
            PointPairList list2 = new PointPairList();
            PointPairList list3 = new PointPairList();
            Random rand = new Random();

            for ( int i=0; i<5; i++ )
            {
                double x = (double) i;
                double y = rand.NextDouble() * 1000;
                double y2 = rand.NextDouble() * 1000;
                double y3 = rand.NextDouble() * 1000;
                list.Add( x, y );
                list2.Add( x, y2 );
                list3.Add( x, y3 );
            }

            BarItem myCurve = myPane.AddBar( "curve 1", list, Color.Blue );
            BarItem myCurve2 = myPane.AddBar( "curve 2", list2, Color.Red );
            BarItem myCurve3 = myPane.AddBar( "curve 3", list3, Color.Green );

            //myPane.XAxis.IsReverse = true;
            myPane.AxisChange( this.CreateGraphics() );
            myPane.XAxis.IsTicsBetweenLabels = true;
            string[] labels = { "one", "two", "three", "four", "five" };
            myPane.XAxis.TextLabels = labels;
            myPane.XAxis.Type = AxisType.Text;
            //myPane.XAxis.Step = 3;
            myPane.XAxis.IsAllTics = false;

            ArrowItem tic = new ArrowItem( Color.Black, 1.0f, 2.5f, 0.99f, 2.5f, 1.01f );
            tic.IsArrowHead = false;
            tic.Location.CoordinateFrame = CoordType.XScaleYAxisFraction;
            myPane.GraphItemList.Add( tic );

            CreateBarLabels( myPane );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test - log/exponential axis
            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            PointPairList ppl1 = new PointPairList();
            PointPairList ppl2 = new PointPairList();

            for ( int i=0; i<100; i++ )
            {
                double x = (double) i * 1.52 + 0.001;
                double x2 = x*10000;
                double y = Math.Sin( i / 8.0 ) * 100000 + 100001;
                double y2 = Math.Sin( i / 8.0 ) * 100000 + 100001;
                double z = Math.Abs( Math.Cos( i / 8.0 ) ) * y;
                ppl1.Add( x, y, z );
                ppl2.Add( x2, y2, z );
            }

            LineItem myCurve = myPane.AddCurve( "curve", ppl1, Color.Blue, SymbolType.Diamond );
            LineItem myCurve2 = myPane.AddCurve( "curve2", ppl2, Color.Red, SymbolType.Triangle );

            myPane.XAxis.IsUseTenPower = false;
            myPane.XAxis.Type = AxisType.Log;
            myPane.XAxis.Exponent = 0.3;

            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// Basic curve test
            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            double[] x = new double[100];
            double[] y = new double[100];

            for ( int i=0; i<100; i++ )
            {
                x[i] = (double) i;
                y[i] = Math.Sin( i / 8.0 ) * 100000 + 100001;
                double z = Math.Abs(Math.Cos( i / 8.0 )) * y[i];
            }
            BasicArrayPointList list = new BasicArrayPointList( x, y );

            //LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );
            LineItem myCurve = myPane.AddCurve( "curve", list, Color.Blue, SymbolType.Diamond );
            //myCurve.Symbol.IsVisible = true;
            //myCurve.IsY2Axis = true;
            //myPane.Y2Axis.IsVisible = true;
            //myPane.YAxis.Type = AxisType.Log;
            //myPane.YAxis.IsScaleVisible = false;
            //myPane.YAxis.IsShowTitle = false;
            //myPane.MarginLeft = 50;

            //TextItem text = new TextItem("5000", -0.01f, 5000f, CoordType.XAxisFractionYScale, AlignH.Right, AlignV.Center );
            //text.FontSpec.Border.IsVisible = false;
            //text.FontSpec.Fill.IsVisible = false;
            //myPane.GraphItemList.Add( text );

            //TextItem text2 = new TextItem( "My Title", 0.01f, 0.5f, CoordType.XPaneFractionYAxisFraction,
            //	AlignH.Center, AlignV.Top );
            //text2.FontSpec.Border.IsVisible = false;
            //text2.FontSpec.Fill.IsVisible = false;
            //text2.FontSpec.Angle = 90f;
            //myPane.GraphItemList.Add( text2 );

            //myPane.YAxis.IsVisible = false;
            //myPane.Y2Axis.Title.Text = "Y2 Axis";
            //myPane.XAxis.BaseTic = 1;
            //myPane.XAxis.Step = 5;
            //myPane.Y2Axis.Cross = 60;
            //myPane.YAxis.IsScaleLabelsInside = true;
            //myPane.Y2Axis.IsShowGrid = true;
            //myPane.XAxis.IsShowGrid = true;
            //myPane.YAxis.IsSkipFirstLabel = true;
            myPane.XAxis.IsSkipLastLabel = true;
            //myPane.XAxis.IsSkipLastLabel = true;
            //myPane.XAxis.IsReverse = true;
            //myPane.AxisBorder.IsVisible = false;
            //myPane.XAxis.Type = AxisType.Log;

            PointF[] polyPts = new PointF[7];
            polyPts[0] = new PointF( 30f, 0.2f );
            polyPts[1] = new PointF( 25f, 0.4f );
            polyPts[2] = new PointF( 27f, 0.6f );
            polyPts[3] = new PointF( 30f, 0.8f );
            polyPts[4] = new PointF( 35f, 0.6f );
            polyPts[5] = new PointF( 37f, 0.4f );
            polyPts[6] = new PointF( 30f, 0.2f );
            PolyItem poly = new PolyItem( polyPts, Color.Red, Color.LightSeaGreen, Color.White );
            myPane.GraphItemList.Add( poly );

            myPane.AxisChange( this.CreateGraphics() );

            myPane.FontSpec.IsDropShadow = true;
            myPane.FontSpec.DropShadowColor = Color.Red;
            myPane.FontSpec.Border.IsVisible = true;
            myPane.FontSpec.Fill = new Fill( Color.White, Color.LightGoldenrodYellow );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            #if false	// repetitive points
            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );

            double[] Track_DateTime_Xaxis = {1};
            double[] Y_processed_axis = {10};

            LineItem myCurve = myPane.AddCurve( "Curve Legend", Track_DateTime_Xaxis, Y_processed_axis,
                Color.DarkRed );
            myCurve.Symbol.Fill = new Fill( Color.Red );
            myPane.XAxis.Max = 1;
            myPane.YAxis.IsShowGrid = true;
            myPane.YAxis.IsShowMinorGrid = true;
            //myPane.AxisChange( g );

            #endif

            #if false	// masterpane test

            master = new MasterPane( "ZedGraph MasterPane Example",
                new Rectangle( 10, 10, this.Width-20, this.Height-100 ) );

            master.PaneFill = new Fill( Color.White, Color.MediumSlateBlue, 45.0F );

            master.Legend.IsVisible = true;
            master.Legend.Position = LegendPos.TopCenter;

            TextItem text = new TextItem( "Priority", 0.88F, 0.12F );
            text.Location.CoordinateFrame = CoordType.PaneFraction;
            text.FontSpec.Angle = 15.0F;
            text.FontSpec.FontColor = Color.Red;
            text.FontSpec.IsBold = true;
            text.FontSpec.Size = 16;
            text.FontSpec.Border.IsVisible = false;
            text.FontSpec.Border.Color = Color.Red;
            text.FontSpec.Fill.IsVisible = false;
            text.Location.AlignH = AlignH.Left;
            text.Location.AlignV = AlignV.Bottom;
            master.GraphItemList.Add( text );

            text = new TextItem( "DRAFT", 0.5F, 0.5F );
            text.Location.CoordinateFrame = CoordType.PaneFraction;
            text.FontSpec.Angle = 30.0F;
            text.FontSpec.FontColor = Color.FromArgb( 70, 255, 100, 100 );
            text.FontSpec.IsBold = true;
            text.FontSpec.Size = 100;
            text.FontSpec.Border.IsVisible = false;
            text.FontSpec.Fill.IsVisible = false;
            text.Location.AlignH = AlignH.Center;
            text.Location.AlignV = AlignV.Center;
            text.ZOrder = ZOrder.A_InFront;
            master.GraphItemList.Add( text );

            ColorSymbolRotator rotator = new ColorSymbolRotator();

            for ( int j=0; j<8; j++ )
            {
                // Create a new graph - rect dimensions do not matter here, since it
                // will be resized by MasterPane.AutoPaneLayout()
                GraphPane newPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                    "Case #" + (j+1).ToString(),
                    "Time, Days",
                    "Rate, m/s" );

                newPane.PaneFill = new Fill( Color.PowderBlue, Color.LightYellow, 45.0F );
                newPane.BaseDimension = 6.0F;

                // Make up some data arrays based on the Sine function
                double x, y;
                PointPairList list = new PointPairList();
                for ( int i=0; i<36; i++ )
                {
                    x = (double) i + 5;
                    y = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 + (double) j ) );
                    list.Add( x, y );
                }

                LineItem myCurve = newPane.AddCurve( "Type " + j.ToString(),
                    list, rotator.NextColor, rotator.NextSymbol );
                myCurve.Symbol.Fill = new Fill( Color.White );

                master.Add( newPane );
            }

            Graphics g = this.CreateGraphics();

            master.AutoPaneLayout( g, PaneLayout.SquareRowPreferred);
            master.AxisChange( g );
            #endif

            #if false
            // Create a new GraphPane

            myPane = new GraphPane( new RectangleF( 0, 0, 640, 480 ), "Title", "XAxis", "YAxis" );
            string[] labels = { "Panther", "Lion", "Cheetah", "Cougar", "Tiger", "Leopard" };
            double[] x = { 100, 115, 75, 22, 98, 40 };
            double[] x2 = { 120, 175, 95, 57, 113, 110 };
            double[] x3 = { 204, 192, 119, 80, 134, 156 };
            BarItem myCurve = myPane.AddBar( "Here", x, null, Color.Red );
            myCurve.Bar.Fill = new Fill( Color.Red, Color.White, Color.Red, 90f );
            myCurve = myPane.AddBar( "There", x2, null, Color.Blue );
            myCurve.Bar.Fill = new Fill( Color.Blue, Color.White, Color.Blue, 90f );
            myCurve = myPane.AddBar( "Elsewhere", x3, null, Color.Green );
            myCurve.Bar.Fill = new Fill( Color.Green, Color.White, Color.Green, 90f );
            myPane.YAxis.IsTicsBetweenLabels = true;
            myPane.YAxis.TextLabels = labels;
            myPane.YAxis.Type = AxisType.Text;
            myPane.BarType = BarType.Stack;
            myPane.BarBase = BarBase.Y;
            myPane.Chart.Fill = new Fill( Color.White, Color.FromArgb( 255, 255, 166), 45.0F );

            #endif

            #if false	// ordinal demo

            myPane = new GraphPane( new RectangleF( 0, 0, 300, 200 ), "Ordinal Demo", "X Value (ordinal)", "Y Value" );

            PointPairList list = new PointPairList();
            list.Add( 10, 50 );
            list.Add( 11, 24 );
            list.Add( 20, 75 );
            list.Add( 21, 62 );

            LineItem myCurve = myPane.AddCurve( "Curve", list, Color.Blue, SymbolType.Diamond );
            myCurve.Symbol.Fill = new Fill( Color.White );

            myPane.FontSpec.Size = 24;
            myPane.XAxis.TitleFontSpec.Size = 18;
            myPane.XAxis.Scale.FontSpec.Size = 18;
            myPane.YAxis.TitleFontSpec.Size = 18;
            myPane.YAxis.Scale.FontSpec.Size = 18;
            myPane.XAxis.Type = AxisType.Ordinal;
            myPane.AxisChange( this.CreateGraphics() );

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;

            #endif

            if ( master != null )
                _crossAxis = master[0].Y2Axis;
            else
                _crossAxis = myPane.YAxisList[1];

            trackBar1.Minimum = 0;
            trackBar1.Maximum = 100;
            trackBar1.Value = 50;
            UpdateControls();
            SetSize();

            //this.WindowState = FormWindowState.Maximized ;
            if ( this.myPane != null )
                this.myPane.AxisChange( this.CreateGraphics() );
        }
Пример #12
0
 private void OnRenderGraph(System.Drawing.Graphics g, ZedGraph.MasterPane mPane)
 {
     //mPane[0] = new GraphPane();
     mPane.AxisChange(g);
 }
Пример #13
0
    /// <summary>
    /// This method is where you generate your graph.
    /// </summary>
    /// <param name="masterPane">You are provided with a MasterPane instance that
    /// contains one GraphPane by default (accessible via masterPane[0]).</param>
    /// <param name="g">A graphics instance so you can easily make the call to AxisChange()</param>
    /// <param name="z">And a ZedGraphWeb instance because the event handler requires it</param>
    /// <param name="row">Selected row n gridview.</param>
    private static void OnRenderGraphVillagePie(ZedGraphWeb z,
        Graphics g,
        MasterPane masterPane,
        TableRow row)
    {
        // Get the GraphPane so we can work with it
        GraphPane myPane = masterPane[0];

        // Fill the pane background with a color gradient
        myPane.Fill = new Fill(Color.White, Color.White, 45.0f);
        // No fill for the chart background
        myPane.Chart.Fill.Type = FillType.None;

        myPane.Legend.IsVisible = false;
        myPane.Legend.IsShowLegendSymbols = true;
        myPane.Legend.IsHStack = false;

        // Add some pie slices
        const string srcTable = "Goods";
        DataBase dataBase = new DataBase();
        DataSet dataSet = dataBase.GetGoods(srcTable, Misc.String2Number(row.Cells[0].Text.Trim()));
        DataRow dataRow = dataSet.Tables[srcTable].Rows[0];
        int wood = Misc.String2Number(dataRow.ItemArray[0].ToString());
        int clay = Misc.String2Number(dataRow.ItemArray[1].ToString());
        int iron = Misc.String2Number(dataRow.ItemArray[2].ToString());
        int crop = Misc.String2Number(dataRow.ItemArray[3].ToString());

        PieItem segmentWood = myPane.AddPieSlice(wood, Color.Green, Color.Green, 45f, 0, wood.ToString());
        PieItem segmentClay = myPane.AddPieSlice(clay, Color.OrangeRed, Color.OrangeRed, 45f, .0, clay.ToString());
        PieItem segmentIron = myPane.AddPieSlice(iron, Color.Blue, Color.Blue, 45f, 0, iron.ToString());
        PieItem segmentCrop = myPane.AddPieSlice(crop, Color.Yellow, Color.Yellow, 45f, 0.2, crop.ToString());

        segmentWood.LabelDetail.FontSpec.Size = 20f;
        segmentClay.LabelDetail.FontSpec.Size = 20f;
        segmentIron.LabelDetail.FontSpec.Size = 20f;
        segmentCrop.LabelDetail.FontSpec.Size = 20f;

        // Sum up the pie values
        CurveList curves = myPane.CurveList;
        double total = 0;
        for (int x = 0; x < curves.Count; x++)
        {
            total += ((PieItem) curves[x]).Value;
        }

        // Set the GraphPane title
        //myPane.Title.Text = String.Format("Total Goods : {0}\nWood : {1}\nClay : {2}\nIron : {3}\nCrop : {4}", total,
        //                                  wood, clay, iron, crop);
        myPane.Title.Text = String.Format("Total Goods : {0}", total);
        myPane.Title.FontSpec.IsItalic = true;
        myPane.Title.FontSpec.Size = 24f;
        myPane.Title.FontSpec.Family = "Times New Roman";

        masterPane.AxisChange(g);
    }
Пример #14
0
        private void OnRenderUserChart(ZedGraphWeb z, Graphics g, MasterPane masterPane)
        {
            GraphPane graphPane = masterPane[0];
            graphPane.Title.Text = Resource.SalesByMonthChartLabel;
            graphPane.XAxis.Title.Text = Resource.SalesByMonthChartMonthLabel;
            graphPane.YAxis.Title.Text = Resource.SalesByMonthChartSalesLabel;

            PointPairList pointList = new PointPairList();

            if (salesByMonthData == null) { salesByMonthData = CommerceReport.GetSalesByYearMonthBySite(siteSettings.SiteGuid); }

            foreach (DataRow row in salesByMonthData.Rows)
            {
                double x = new XDate(Convert.ToInt32(row["Y"]), Convert.ToInt32(row["M"]), 1);
                double y = Convert.ToDouble(row["Sales"]);
                pointList.Add(x, y);
            }

            LineItem myCurve2 = graphPane.AddCurve(Resource.SalesByMonthChartLabel, pointList, Color.Blue, SymbolType.Circle);
            // Fill the area under the curve with a white-red gradient at 45 degrees
            myCurve2.Line.Fill = new Fill(Color.White, Color.Green, 45F);
            // Make the symbols opaque by filling them with white
            myCurve2.Symbol.Fill = new Fill(Color.White);

            // Set the XAxis to date type
            graphPane.XAxis.Type = AxisType.Date;
            graphPane.XAxis.CrossAuto = true;

            // Fill the axis background with a color gradient
            graphPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45F);

            masterPane.AxisChange(g);
        }
Пример #15
0
        private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
        {
            ErrorMsg.Text = "";
            CY.GFive.DALProviders.SqlServerProvider.ScoreProvider sp = new CY.GFive.DALProviders.SqlServerProvider.ScoreProvider();
            string classcode = Request.Form.Get("ddlClass");
            string[] year = Request.Form.GetValues("cyear");
            string[] term = Request.Form.GetValues("cterm");
            if (classcode == null || string.IsNullOrEmpty(classcode) || year == null || year.Length == 0 || term == null || term.Length == 0)
            {
                ErrorMsg.Text = "有参数不正确";
                ZedGraphWeb1.Visible = false;
                return;
            }
            List<YearTerm> ytlist = new List<YearTerm>();
            List<YearTermCourse> ytclist = new List<YearTermCourse>();
            for (int i = 0; i < year.Length; i++)
            {
                bool isIn = false;
                foreach (YearTerm yt in ytlist)
                {
                    if (yt.Year == year[i] && yt.Term == term[i])
                        isIn = true;
                }
                if (!isIn)
                    ytlist.Add(new YearTerm { Year = year[i], Term = term[i] });
            }
            foreach (YearTerm yt in ytlist)
            {
                List<string> courselist = sp.GetCourseList(yt.Year, Convert.ToInt32(yt.Term), classcode);
                if (courselist.Count > 0)
                    foreach (string s in courselist)
                    {
                        ytclist.Add(new YearTermCourse { Year = yt.Year, Term = yt.Term, Course = s });
                    }
            }
            GraphPane myPane = masterPane[0];

            myPane.Title.Text = "分数段统计";       //设计图表的标题
            myPane.XAxis.Title.Text = "分数段";    //X轴标题
            myPane.YAxis.Title.Text = "人数";          //Y轴标题
            string[] labels = new string[6];
            labels[0] = "60以下";
            labels[1] = "60-69";
            labels[2] = "70-79";
            labels[3] = "80-89";
            labels[4] = "90-99";
            labels[5] = "100";
            foreach (YearTermCourse ytc in ytclist)
            {
                Random rand = new Random();
                int r = rand.Next(8);
                int gg = rand.Next(10);
                int b = rand.Next(5);
                Color temp = Color.FromArgb(r * 30, gg * 25, b * 50);
                DataSet ds = sp.GetScoreUnionByParam(ytc.Year, Convert.ToInt32(ytc.Term), classcode, ytc.Course);
                CY.GFive.Core.Business.Course ctemp = CY.GFive.Core.Business.Course.GetByCode(ytc.Course);
                PointPairList list = new PointPairList();
                for (int i = 0; i < 6; i++)
                    list.Add(0, Convert.ToInt32(ds.Tables[0].Rows[i]["人数"]));
                BarItem myCurve = myPane.AddBar(ytc.Year + "年" + ctemp.Name, list, temp);
                myCurve.Bar.Fill = new Fill(temp, Color.White, temp);
            }
            myPane.XAxis.MajorTic.IsBetweenLabels = false; //柱状显示位置,true为在两个下标题值的中间,flase为两边
            myPane.XAxis.Scale.TextLabels = labels;//下标题的内容
            myPane.XAxis.Type = AxisType.Text;
            myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 90.0f);//图表外层背景填充色,由color1到color2渐变,参数3为方向
            myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 270.0f);//图表内层背景填充色,由color1到color2渐变,参数3为方向
            ZedGraphWeb1.Visible = true;
            masterPane.AxisChange(g);
        }
Пример #16
0
    protected void ZedGraphWebExpStatistic_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, Graphics g, MasterPane masterPane)
    {
        Color statColor = Color.Blue;
        string statTitle = string.Empty;
        string statXAxisTitle = string.Empty;
        switch (ListBoxViewContent.SelectedValue)
        {
            case "NpcBeKilled":
                statColor = Color.Orange;
                statTitle = StringDef.NpcBeKilledStatistic;
                statXAxisTitle = StringDef.NpcBeKilledCount;
                break;
            case "NpcKill":
                statColor = Color.Red;
                statTitle = StringDef.NpcKillPlayerStatistic;
                statXAxisTitle = StringDef.NpcKillPlayerCount;
                break;
        }

        GraphPane graphPane = masterPane[0];
        graphPane.Fill = new Fill(WebConfig.GraphPaneBgColor);
        graphPane.Title.Text = statTitle;
        graphPane.Title.FontSpec.Family = StringDef.DefaultFontFamily;
        graphPane.Title.FontSpec.Size = 10;
        graphPane.Legend.IsVisible = false;
        graphPane.BarSettings.Base = BarBase.Y;

        graphPane.XAxis.Title.Text = statXAxisTitle;
        graphPane.XAxis.Title.FontSpec.Family = StringDef.DefaultFontFamily;
        graphPane.XAxis.Title.FontSpec.Size = 6.2f;
        graphPane.XAxis.MajorGrid.IsVisible = true;
        graphPane.XAxis.MajorGrid.DashOff = 0;
        graphPane.XAxis.MajorGrid.Color = Color.Gray;
        graphPane.XAxis.MinorGrid.IsVisible = true;
        graphPane.XAxis.MinorGrid.Color = Color.LightGray;
        graphPane.XAxis.MinorGrid.DashOff = 0;
        graphPane.XAxis.Scale.FontSpec.Size = 5.6f;
        graphPane.XAxis.Scale.FontSpec.Family = StringDef.DefaultFontFamily;

        //graphPane.YAxis.Title.Text = StringDef.NpcTemplate;
        graphPane.YAxis.Title.FontSpec.Family = StringDef.DefaultFontFamily;
        graphPane.YAxis.MajorTic.IsBetweenLabels = true;
        graphPane.YAxis.Scale.IsPreventLabelOverlap = false;
        graphPane.YAxis.Scale.AlignH = AlignH.Center;
        graphPane.YAxis.Scale.FontSpec.Size = 5.6f;
        graphPane.YAxis.Scale.FontSpec.Family = StringDef.DefaultFontFamily;
        graphPane.YAxis.Scale.IsReverse = true;
        graphPane.YAxis.Type = AxisType.Text;

        double[] countList = new double[_recordList.Count];
        string[] templateList = new string[_recordList.Count];
        for (int i = 0; i < _recordList.Count; i++)
        {
            NpcStatisticInfo info = _recordList[i];
            countList[i] = info.Count;
            FS2NpcData npcData = FS2GameDataManager.TheInstance.GetNpcData(int.Parse(info.TemaplteId));
            if (npcData != null)
            {
                templateList[i] = npcData.ToString();
            }
            else
            {
                templateList[i] = info.TemaplteId;
            }
        }
        BarItem barItem = graphPane.AddBar(StringDef.NpcBeKilledCount, countList, null, Color.Blue);
        barItem.Bar.Fill = new Fill(statColor);
        graphPane.YAxis.Scale.TextLabels = templateList;
        masterPane.AxisChange();
        BarItem.CreateBarLabels(graphPane, false, string.Empty, StringDef.DefaultFontFamily, 5.6f, TextObj.Default.FontColor, false, false, false);
    }
Пример #17
0
 private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
 {
     ErrorMsg.Text = "";
     CY.GFive.DALProviders.SqlServerProvider.ScoreProvider sp = new CY.GFive.DALProviders.SqlServerProvider.ScoreProvider();
     string coursecode = Request.Form.Get("ddlCourse");
     string term = Request.Form.Get("ddlTerm");
     if (coursecode == null || coursecode == "请选择" || term == null || term == "请选择")
     {
         ErrorMsg.Text = "有参数不正确";
         ZedGraphWeb1.Visible = false;
         return;
     }
     if (string.IsNullOrEmpty(ddlYearNum.SelectedValue) || ddlYearNum.SelectedValue == "请选择")
     {
         ErrorMsg.Text = "有参数不正确";
         ZedGraphWeb1.Visible = false;
         return;
     }
     string year = ddlYearNum.SelectedItem.ToString();//year term course class teacher
     GraphPane myPane = masterPane[0];
     myPane.Title.Text = "同课程分数段统计";       //设计图表的标题
     myPane.XAxis.Title.Text = "分数段";    //X轴标题
     myPane.YAxis.Title.Text = "人数";          //Y轴标题
     string[] labels = new string[6];
     labels[0] = "60以下";
     labels[1] = "60-69";
     labels[2] = "70-79";
     labels[3] = "80-89";
     labels[4] = "90-99";
     labels[5] = "100";
     List<string> dic = sp.PrapareTeacherAndClassByCourse(year, Convert.ToInt32(term), coursecode);
     foreach (string s in dic)
     {
         string[] value = s.Split(','); //teachercode,classcode
         Random rand = new Random();
         int r = rand.Next(8);
         int gg = rand.Next(10);
         int b = rand.Next(5);
         Color temp = Color.FromArgb(r * 30, gg * 25, b * 50);
         DataSet ds = sp.GetScoreUnionByParam(year, Convert.ToInt32(term), value[1], coursecode);
         PointPairList list = new PointPairList();
         for (int i = 0; i < 6; i++)
             list.Add(0, Convert.ToInt32(ds.Tables[0].Rows[i]["人数"]));
         CY.GFive.Core.Business.StaffInfo si = CY.GFive.Core.Business.StaffInfo.GetInstance(value[0]);
         CY.GFive.Core.Business.ClassInfo ci = CY.GFive.Core.Business.ClassInfo.GetByCode(value[1]);
         BarItem myCurve = myPane.AddBar(si.Name + "-" + ci.ClassName, list, temp);
         myCurve.Bar.Fill = new Fill(temp, Color.White, temp);
     }
     myPane.XAxis.MajorTic.IsBetweenLabels = false; //柱状显示位置,true为在两个下标题值的中间,flase为两边
     myPane.XAxis.Scale.TextLabels = labels;//下标题的内容
     myPane.XAxis.Type = AxisType.Text;
     myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 90.0f);//图表外层背景填充色,由color1到color2渐变,参数3为方向
     myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 270.0f);//图表内层背景填充色,由color1到color2渐变,参数3为方向
     ZedGraphWeb1.Visible = true;
     masterPane.AxisChange(g);
 }
Пример #18
0
        /// <summary>
        /// Creates a new plot in the zedGraph Control
        /// </summary>
        /// <param name="peptide"></param>
        /// <param name="scanNumber"></param>
        /// <param name="unmatchedPointsList"></param>
        /// <param name="matchedPointsList"></param>
        public void PlotGraph(string peptide, string scanNumber, PointPairList unmatchedPointsList, PointPairList matchedPointsList)
        {
            //save the data
            m_currentPeptide    = peptide;
            m_currentScanNumber = scanNumber;
            m_unmatchedPoints   = unmatchedPointsList;
            m_matchedPoints     = matchedPointsList;

            //clear the masterPane
            ZedGraph.MasterPane master = this.MasterPane;
            master.GraphObjList.Clear();
            master.PaneList.Clear();

            // split the points into groups
            List <PointPairList> unmatchedPointsSection;
            List <PointPairList> matchedPointsSection;

            // Divides the points into sections, this is used when we create more than one plot
            DividePointsIntoSections(m_options.numberOfPlots, m_matchedPoints, m_unmatchedPoints, out matchedPointsSection, out unmatchedPointsSection);

            // Show the masterpane title
            master.Title.IsVisible = true;
            master.Title.Text      = "Peptide: " + peptide + " Scan: " + scanNumber;

            // Leave a margin around the masterpane, but only a small gap between panes
            master.Margin.All   = 10;
            master.InnerPaneGap = 5;

            for (int j = 0; j < m_options.numberOfPlots; j++)
            {
                // Create a new graph -- dimensions to be set later by MasterPane Layout
                GraphPane myPaneT = new GraphPane(new Rectangle(10, 10, 10, 10),
                                                  "",
                                                  "m/z",
                                                  "Relative Intensity");

                // Set the BaseDimension, so fonts are scale a little bigger
                myPaneT.BaseDimension = m_standardBaseDemension / m_options.numberOfPlots;

                // Hide the XAxis scale and title
                myPaneT.XAxis.Title.IsVisible = false;
                myPaneT.XAxis.Scale.IsVisible = false;
                // Hide the legend, border, and GraphPane title
                myPaneT.Legend.IsVisible = false;
                myPaneT.Border.IsVisible = false;
                myPaneT.Title.IsVisible  = false;

                // Restrict the scale to go right up to the last data point
                double matchedMax   = 0;
                double unmatchedMax = 0;
                double matchedMin   = double.MaxValue;
                double unmatchedMin = double.MaxValue;

                if (matchedPointsSection[j].Count > 0)
                {
                    matchedMax = matchedPointsSection[j][matchedPointsSection[j].Count - 1].X;
                    matchedMin = matchedPointsSection[j][0].X;
                }
                if (unmatchedPointsSection[j].Count > 0)
                {
                    unmatchedMax = unmatchedPointsSection[j][unmatchedPointsSection[j].Count - 1].X;
                    unmatchedMin = unmatchedPointsSection[j][0].X;
                }

                myPaneT.XAxis.Scale.Max = (matchedMax > unmatchedMax) ? matchedMax : unmatchedMax;
                myPaneT.XAxis.Scale.Min = (matchedMin < unmatchedMin) ? matchedMin : unmatchedMin;

                // Remove all margins
                myPaneT.Margin.All = 0;
                // Except, leave some top margin on the first GraphPane
                if (j == 0)
                {
                    myPaneT.XAxis.Scale.Min = myPaneT.XAxis.Scale.Min - 100;
                    myPaneT.Margin.Top      = 20;
                }
                // And some bottom margin on the last GraphPane
                // Also, show the X title and scale on the last GraphPane only
                if (j == m_options.numberOfPlots - 1)
                {
                    myPaneT.XAxis.Scale.Max       = myPaneT.XAxis.Scale.Max + 100;
                    myPaneT.XAxis.Title.IsVisible = true;
                    myPaneT.Legend.IsVisible      = m_options.showLegend;
                    myPaneT.Legend.Position       = LegendPos.BottomCenter;
                }
                myPaneT.XAxis.Scale.IsVisible = true;
                //myPaneT.Margin.Bottom = 10;
                if (j > 0)
                {
                    myPaneT.YAxis.Scale.IsSkipLastLabel = true;
                }
                // This sets the minimum amount of space for the left and right side, respectively
                // The reason for this is so that the ChartRect's all end up being the same size.
                myPaneT.YAxis.MinSpace  = 80;
                myPaneT.Y2Axis.MinSpace = 20;


                // generate the lines
                // Keep the matched points in front by drawing them first.
                OHLCBarItem matchedCurve = myPaneT.AddOHLCBar(matchedCurveName, matchedPointsSection[j], m_options.matchedColor);
                matchedCurve.Bar.Width = 2;
                AddAnnotations(matchedCurve.Points, myPaneT);
                if (!m_options.hideUnmatched)
                {
                    OHLCBarItem unmatchedCurve = myPaneT.AddOHLCBar(unmatchedCurveName, unmatchedPointsSection[j], m_options.unmatchedColor);
                    AddAnnotations(unmatchedCurve.Points, myPaneT);
                }

                // Add the GraphPane to the MasterPane.PaneList
                master.Add(myPaneT);
            }

            //Tell ZedGraph to refigure the axes since the data has changed
            using (Graphics g = this.CreateGraphics())
            {
                // Align the GraphPanes vertically
                if (m_options.numberOfPlots >= 4)
                {
                    master.SetLayout(g, PaneLayout.SquareColPreferred);
                }
                else
                {
                    master.SetLayout(g, PaneLayout.SingleColumn);
                }
                master.AxisChange(g);
                this.PerformAutoScale();
            }
        }
Пример #19
0
    protected void graphResults_OnRenderGraph(ZedGraph.Web.ZedGraphWeb z, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
    {
        if (hiddenAccountID.Value == null || hiddenAccountID.Value == Guid.Empty.ToString())
        {
            return;
        }

        DataSet   dataSet = null;
        GraphPane myPane  = masterPane[0];

        myPane.Border.Color     = Color.White;
        myPane.Title.Text       = Lang.OurRingtestResults;;
        myPane.XAxis.Title.Text = Lang.Years;
        myPane.YAxis.Title.Text = "%"; // Lang.ErrorPercent;

        Database.RingtestBox box = new Database.RingtestBox();

        try
        {
            Database.Interface.open();
            dataSet = Database.RingtestReport.select_Year_Error_CalculatedUncertainty_RingtestBoxID_MCAType_ActivityRef_where_AccountID(new Guid(hiddenAccountID.Value));

            PointPairList list  = new PointPairList();
            PointPairList eList = new PointPairList();
            PointPairList bList = new PointPairList();

            double maxYear = DateTime.Now.Year;
            for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
            {
                Guid boxID = (Guid)dataSet.Tables[0].Rows[i][3];
                box.select_all_where_ID(boxID);

                double year        = Convert.ToDouble(dataSet.Tables[0].Rows[i][0]);
                double error       = Convert.ToDouble(dataSet.Tables[0].Rows[i][1]);
                double uncertainty = Convert.ToDouble(dataSet.Tables[0].Rows[i][2]);
                string MCAType     = dataSet.Tables[0].Rows[i][4].ToString();
                if (MCAType.ToLower() != "serie10")
                {
                    double activity = Convert.ToDouble(dataSet.Tables[0].Rows[i][5]);
                    uncertainty = (uncertainty / activity) * 100.0;
                }

                if (year > maxYear)
                {
                    maxYear = year;
                }

                list.Add(year, error);
                eList.Add(year, error + uncertainty, error - uncertainty);
                bList.Add(year, box.Uncertainty, -box.Uncertainty);
            }

            myPane.YAxis.Scale.Max           = 11.0f;
            myPane.YAxis.Scale.Min           = -11.0f;
            myPane.XAxis.Scale.Max           = maxYear + 1;
            myPane.XAxis.Scale.Min           = maxYear - 10;
            myPane.XAxis.Scale.MinorStep     = 1.0;
            myPane.XAxis.Scale.MajorStep     = 1.0;
            myPane.YAxis.MajorGrid.IsVisible = true;
            myPane.YAxis.MinorGrid.IsVisible = true;
            myPane.Legend.IsVisible          = true;

            LineItem curve = myPane.AddCurve(Lang.Reported_result, list, Color.White, SymbolType.Circle);
            curve.Line.IsVisible = false;
            curve.Symbol.Fill    = new Fill(Color.IndianRed);
            curve.Symbol.Size    = 6;

            ErrorBarItem errBar = myPane.AddErrorBar(Lang.CalculatedUncertainty, eList, Color.Red);
            errBar.Bar.PenWidth = 1;

            ErrorBarItem boxBar = myPane.AddErrorBar(Lang.RingtestBoxUncertainty, bList, Color.LightGray);
            boxBar.Bar.PenWidth         = 12;
            boxBar.Bar.Symbol.IsVisible = false;

            myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, Color.White), 45.0F);

            const double offset = 0.1;

            for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
            {
                PointPair pt = curve.Points[i];

                if (pt.Y >= myPane.YAxis.Scale.Min && pt.Y <= myPane.YAxis.Scale.Max)
                {
                    TextObj text = new TextObj(pt.Y.ToString("f2"), pt.X + offset, pt.Y, CoordType.AxisXYScale, AlignH.Left, AlignV.Center);
                    text.FontSpec.Size             = 6;
                    text.ZOrder                    = ZOrder.A_InFront;
                    text.FontSpec.Border.IsVisible = false;
                    text.FontSpec.Fill.IsVisible   = false;
                    //text.FontSpec.Angle = 90;
                    myPane.GraphObjList.Add(text);

                    //g.DrawLine(pen, new Point((int)(pt.X + 10), (int)pt.Y), new Point((int)(pt.X - 10), (int)pt.Y));
                }
            }

            myPane.YAxis.Scale.MaxGrace = 0.2;
        }
        catch (Exception ex)
        {
            Utils.reportStatus(ref labelStatus, Color.Red, "Ringtest.graphResults_OnRenderGraph: " + ex.Message);
            return;
        }
        finally
        {
            Database.Interface.close();
        }

        masterPane.AxisChange(g);
    }