private void ZedGraphStyle_ZedGraphDrawing(object sender, ZedGraphDrawingEventArgs e)
        {
            ZedGraphControl zedGraph = new ZedGraphControl();
            zedGraph.Size = new Size(100, 100);

            zedGraph.GraphPane.Fill.Type = FillType.None;
            zedGraph.GraphPane.Chart.Fill.Type = FillType.None;

            zedGraph.GraphPane.Border.IsVisible = false;
            zedGraph.GraphPane.Chart.Border.IsVisible = false;
            zedGraph.GraphPane.XAxis.IsVisible = false;
            zedGraph.GraphPane.YAxis.IsVisible = false;
            zedGraph.GraphPane.Legend.IsVisible = false;
            zedGraph.GraphPane.Title.IsVisible = false;

            for (int i = 0; i < SelectedColumns.Count; i++)
            {
                double value = 0;
                if (!double.TryParse(e.Feature.ColumnValues[SelectedColumns[i]], out value))
                {
                    zedGraph.Dispose();
                    return;
                }
                Color color = System.Drawing.Color.FromArgb(pieColors[i].AlphaComponent, pieColors[i].RedComponent, pieColors[i].GreenComponent, pieColors[i].BlueComponent);
                PieItem pieItem = zedGraph.GraphPane.AddPieSlice(value, color, 0.08, "");
                pieItem.LabelDetail.IsVisible = false;
            }
            zedGraph.AxisChange();

            e.Bitmap = zedGraph.GraphPane.GetImage();
            zedGraph.Dispose();
        }
        /// <summary>
        /// Creates an image of a barchart which represents the data in <paramref name="barChartData"/>.  The image is saved at <paramref name="completeFileName"/>.
        /// </summary>
        /// <param name="completeFileName">The path at which to save the generated image.</param>
        /// <param name="barChartData">The &lt;year, value&gt; plots for the barchart.</param>
        /// <returns>True on success, false on fail.</returns>
        private bool CreateBarChartImageFile( string completeFileName, SortedDictionary<int, double> barChartData )
        {
            if( Thread.CurrentThread.GetApartmentState() != ApartmentState.STA )
            {
                return this.InvokeCreateBarChartImageFile( completeFileName, barChartData );
            }

            try
            {
                const string fontFamily = "Times New Roman";
                const float fontSize = 12f;

                ZedGraphControl chart = new ZedGraphControl();
                chart.Size = new Size( ( barChartData.Count + 2 ) * 45, 300 );

                GraphPane pane = chart.GraphPane;
                pane.IsFontsScaled = false;

                pane.BarSettings.Type = BarType.Stack;
                pane.Chart.Fill = new Fill( Color.Transparent );
                pane.Fill = new Fill( Color.LightBlue, Color.AliceBlue, 90F );

                pane.Title.FontSpec.Family = fontFamily;
                pane.Title.FontSpec.Size = fontSize;
                pane.Title.IsVisible = false;
                pane.Title.Text = string.Empty;

                pane.XAxis.MajorGrid.IsVisible = false;

                pane.XAxis.MajorTic.IsInside = false;

                pane.XAxis.Scale.FontSpec.Family = fontFamily;
                pane.XAxis.Scale.FontSpec.Size = fontSize;

                pane.XAxis.Title.FontSpec.Family = fontFamily;
                pane.XAxis.Title.FontSpec.Size = fontSize;
                pane.XAxis.Title.IsVisible = false;
                pane.XAxis.Title.Text = string.Empty;

                pane.X2Axis.IsVisible = false;
                pane.X2Axis.MajorGrid.IsVisible = false;
                pane.X2Axis.MinorGrid.IsVisible = false;
                pane.X2Axis.MajorTic.IsInside = false;
                pane.X2Axis.MajorTic.IsOutside = false;
                pane.X2Axis.MinorTic.IsInside = false;
                pane.X2Axis.MinorTic.IsOutside = false;

                pane.YAxis.MajorGrid.IsVisible = true;
                pane.YAxis.MajorGrid.Color = Color.LightSteelBlue;

                pane.YAxis.MajorTic.IsInside = false;

                pane.YAxis.MinorTic.IsInside = false;
                pane.YAxis.MinorTic.IsOutside = false;

                pane.YAxis.Scale.FontSpec.Family = fontFamily;
                pane.YAxis.Scale.FontSpec.Size = fontSize;

                pane.YAxis.Title.FontSpec.Family = fontFamily;
                pane.YAxis.Title.FontSpec.Size = fontSize;
                pane.YAxis.Title.IsVisible = false;
                pane.YAxis.Title.Text = string.Empty;

                pane.Y2Axis.IsVisible = false;
                pane.Y2Axis.MajorGrid.IsVisible = false;
                pane.Y2Axis.MinorGrid.IsVisible = false;
                pane.Y2Axis.MajorTic.IsInside = false;
                pane.Y2Axis.MajorTic.IsOutside = false;
                pane.Y2Axis.MinorTic.IsInside = false;
                pane.Y2Axis.MinorTic.IsOutside = false;

                int idx = 0;
                string[] labels = new string[ barChartData.Count ];

                PointPairList nPoints = new PointPairList();
                PointPairList pPoints = new PointPairList();
                foreach( KeyValuePair<int, double> yearValue in barChartData )
                {
                    int yr = yearValue.Key % 100;
                    labels[ idx ] = "'" + yr.ToString( "00" );

                    double value = yearValue.Value * 100;
                    if( yearValue.Value >= 0 )
                    {
                        nPoints.Add( yearValue.Key, 0.0 );
                        pPoints.Add( yearValue.Key, value );
                    }
                    else
                    {
                        nPoints.Add( yearValue.Key, value );
                        pPoints.Add( yearValue.Key, 0.0 );
                    }

                    idx++;
                }

                pane.XAxis.Scale.TextLabels = labels;
                pane.XAxis.Type = AxisType.Text;

                //negative values
                BarItem nBar = pane.AddBar( string.Empty, nPoints, Color.Empty );
                nBar.Bar.Fill = new Fill( Color.FromArgb( 227, 99, 52 ), Color.FromArgb( 255, 177, 126 ), Color.FromArgb( 227, 99, 52 ) );

                //positive values
                BarItem pBar = pane.AddBar( string.Empty, pPoints, Color.Empty );
                pBar.Bar.Fill = new Fill( Color.FromArgb( 81, 148, 157 ), Color.FromArgb( 107, 197, 222 ), Color.FromArgb( 81, 148, 157 ) );

                //1 - Update the chart with the series
                chart.AxisChange();

                //2 - Process the value labels for each point
                this.WriteValueLabels( pane, nBar, fontFamily, fontSize, true );
                this.WriteValueLabels( pane, pBar, fontFamily, fontSize, false );

                //3 - Update the chart again
                chart.AxisChange();

                using( Image img = chart.GetImage() )
                {
                    EncoderParameters parms = new EncoderParameters( 1 );
                    EncoderParameter parm = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, 80L );
                    parms.Param[ 0 ] = parm;

                    ImageCodecInfo jgpEncoder = GetEncoder( ImageFormat.Jpeg );
                    img.Save( completeFileName, jgpEncoder, parms );
                }

                try
                {
                    chart.Dispose();
                    chart = null;
                }
                catch { }

                return true;
            }
            catch { }

            return false;
        }
示例#3
0
        private void writeResetSummaryXMLFile(string dir, ReportLayoutType rFormat)
        {
            frmResetTestReportPlots plots = new frmResetTestReportPlots();
            ZedGraphControl control = new ZedGraphControl();
            string path = dir + @"\SummaryReport.xml";
            switch (rFormat)
            {
                case ReportLayoutType.GroupBySWVersion:
                    path = dir + @"\PerSW_SummaryReport.xml";
                    break;

                case ReportLayoutType.GroupByResetType:
                    path = dir + @"\PerResetType_SummaryReport.xml";
                    break;
            }
            StreamWriter f = new StreamWriter(path);
            try
            {
                f.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                f.WriteLine("<reset>");
                int styleCt = 0;
                List<string> il = new List<string>();
                foreach (string str2 in this.reportDataHash.Keys)
                {
                    Header1DataClass class2 = (Header1DataClass) this.reportDataHash[str2];
                    f.WriteLine("\t<swVersion name=\"{0}\">", str2);
                    ArrayList list2 = new ArrayList();
                    foreach (string str3 in class2.Header2DataHash.Keys)
                    {
                        list2.Add(str3);
                    }
                    list2.Sort();
                    foreach (string str4 in list2)
                    {
                        plots.PaneTitle = str2 + "\r\n" + str4;
                        plots.CreateCharts();
                        GraphPane myPane = plots.AddPane("TTFF Resets", "Secs");
                        GraphPane pane2 = plots.AddPane("2-D Error", "Meters");
                        GraphPane pane3 = plots.AddPane("Verical Error", "Meters");
                        PerEnvReport report = (PerEnvReport) class2.Header2DataHash[str4];
                        if (this.ReportLayout == ReportLayoutType.GroupBySWVersion)
                        {
                            styleCt++;
                        }
                        else
                        {
                            styleCt = 1;
                        }
                        string item = str4 + styleCt.ToString() + ".jpg";
                        string str6 = "Style" + styleCt.ToString();
                        il.Add(item);
                        f.WriteLine("\t\t<environment name=\"{0}\" plotImage=\"{1}\"  showpicturestyle=\"{2}\">", str4, item, str6);
                        ArrayList list3 = new ArrayList();
                        foreach (string str7 in report.PerSiteData.Keys)
                        {
                            list3.Add(str7);
                        }
                        list3.Sort();
                        int num2 = 0;
                        foreach (string str8 in list3)
                        {
                            ReportElements elements = (ReportElements) report.PerSiteData[str8];
                            f.WriteLine("\t\t\t<site number=\"{0}\">", str8);
                            this.printResetSummary(f, elements.TTFFSamples.Samples, elements.NumberOfMisses, elements.NumberOfSVInFix);
                            this.printSampleData(f, elements.TTFFSamples, this._percentile, this._ttffLimit, Convert.ToDouble(this._timeoutVal), "TTFF", "sec");
                            this.printSampleData(f, elements.Position2DErrorSamples, this._percentile, this._hrErrLimit, -9999.0, "2-D Error", "m");
                            this.printSampleData(f, elements.VerticalErrorSamples, this._percentile, this._hrErrLimit, -9999.0, "Vertical Error", "m");
                            this.printSampleData(f, elements.CNOSamples, this._percentile, "", -9999.0, "CNO", "dbHz");
                            f.WriteLine("\t\t\t</site>");
                            if (rFormat == ReportLayoutType.GroupBySWVersion)
                            {
                                plots.AddCurve(myPane, elements.TTFFSamples, elements.TTFFSamples.Samples, str8);
                                plots.AddCurve(pane2, elements.Position2DErrorSamples, elements.Position2DErrorSamples.Samples, str8);
                                plots.AddCurve(pane3, elements.VerticalErrorSamples, elements.VerticalErrorSamples.Samples, str8);
                            }
                            num2++;
                        }
                        if (rFormat == ReportLayoutType.GroupBySWVersion)
                        {
                            plots.RefreshGraph();
                            plots.SaveGraphToFile(dir, item);
                            plots.PaneTitle = string.Empty;
                        }
                        f.WriteLine("\t\t</environment>");
                        myPane = null;
                        pane2 = null;
                        pane3 = null;
                    }
                    f.WriteLine("\t</swVersion>");
                }
                this.printTestSetup(f);
                if (rFormat == ReportLayoutType.GroupBySWVersion)
                {
                    this.modifyResetReportCSS(dir, styleCt);
                    this.printImageList(f, il);
                }
                f.WriteLine("</reset>");
                f.Close();
                this.reportDataHash.Clear();
                this.perRxSetupData.Clear();
                string outputFile = path.Replace(".xml", ".html");
                this.GenerateHTMLReport(path, outputFile, ConfigurationManager.AppSettings["InstalledDirectory"] + @"\scripts\resetReport.xsl");
                plots.Dispose();
                control.Dispose();
            }
            catch (Exception exception)
            {
                this.perRxSetupData.Clear();
                this.perRxSetupData.Clear();
                plots.Dispose();
                control.Dispose();
                if (f != null)
                {
                    f.Close();
                }
                MessageBox.Show(exception.Message, "Report Generate Error");
            }
        }