From 294b81166f21e12247e784d6bf404f5f34b2ee19 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 19 二月 2025 12:51:14 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/report/SimulationCommonReport.cs | 185 ++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 171 insertions(+), 14 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/report/SimulationCommonReport.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/report/SimulationCommonReport.cs index 289f0e4..038e653 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/report/SimulationCommonReport.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/report/SimulationCommonReport.cs @@ -1,4 +1,5 @@ -锘縰sing DevExpress.XtraReports.UI; +锘縰sing DevExpress.XtraCharts; +using DevExpress.XtraReports.UI; using System; using System.Collections; using System.ComponentModel; @@ -21,6 +22,10 @@ //A4璁剧疆 827 1169 this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4; this.Margins = new DevExpress.Drawing.DXMargins(50, 50, 50, 50); + + //鍐呭瀹藉害 + float contentWidth = 727F;//鍐呭瀹藉害 + float firstCaptionHeight = 30F;//涓�绾ф爣棰橀珮搴� //727 1069 @@ -75,20 +80,9 @@ #region 涓�銆侀」鐩杩� - var labForDescription = new XRLabel(); - labForDescription.AnchorHorizontal = (DevExpress.XtraReports.UI.HorizontalAnchorStyles.Left | DevExpress.XtraReports.UI.HorizontalAnchorStyles.Right); - labForDescription.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold); - labForDescription.LocationFloat = new DevExpress.Utils.PointFloat(0F, locationY); - labForDescription.Multiline = true; - labForDescription.Name = "labForDescription"; - labForDescription.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); - labForDescription.SizeF = new System.Drawing.SizeF(727F, 25F); - labForDescription.StylePriority.UseFont = false; - labForDescription.StylePriority.UseTextAlignment = false; - labForDescription.Text = "涓�銆侀」鐩杩�"; - labForDescription.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + var labForDescription = CreateFirstCaption("涓�銆侀」鐩杩�", contentWidth, firstCaptionHeight, 0F, locationY); this.Detail.Controls.Add(labForDescription); - locationY += 25F; + locationY += firstCaptionHeight; #endregion @@ -202,15 +196,178 @@ // 灏嗚〃鏍兼坊鍔犲埌Detail this.Detail.Controls.Add(tableForPumpList); + locationY += 30F; + locationY += 30F * vm.PumpList.Count; } + if (vm.WorkingList != null && vm.WorkingList.Count > 0) + { + foreach (var working in vm.WorkingList) + { + //XRChart chart = new XRChart(); + //chart.LocationF = new DevExpress.Utils.PointFloat(0F, locationY); + //chart.WidthF = contentWidth; + //chart.HeightF = 300F; + + //// 鍒涘缓涓�涓嚎绯诲垪 + //Series series = new Series("Series1", ViewType.Spline); + + //// 娣诲姞鏁版嵁鐐� + //foreach (var item in working.PumpAnaly.Items[0].RatedCurveQH) + //{ + // series.Points.Add(new SeriesPoint(item.X, item.Y)); + //} + + //chart.Series.Add(series); + + //Detail.Controls.Add(chart); + + var accuracyScaleChart = CreateAccuracyScale(working.Accuracy.Scale, 300F, 250F, locationY); + Detail.Controls.Add(accuracyScaleChart); + var accuracyFlowChart = CreateAccuracyItem(working.Accuracy.Flow?.AvgError ?? 0, 213F, 250F, 300F, locationY); + Detail.Controls.Add(accuracyFlowChart); + var accuracyPressChart = CreateAccuracyItem(working.Accuracy.Press?.AvgError ?? 0, 213F, 250F, 513F, locationY); + Detail.Controls.Add(accuracyPressChart); + + //var chart = new XRChart(); + //chart.BackColor = System.Drawing.Color.Transparent; + //chart.BorderColor = System.Drawing.Color.Black; + //chart.Borders = DevExpress.XtraPrinting.BorderSide.None; + ////chart.Legend.LegendID = -1; + //chart.Legend.Name = "Default Legend"; + //chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; + //chart.LocationFloat = new DevExpress.Utils.PointFloat(20F, locationY); + //chart.Name = "xrChart6"; + //chart.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 10, 20, 20, 96F); + //chart.PaletteRepository.Add("Palette 1", new DevExpress.XtraCharts.Palette("Palette 1", DevExpress.XtraCharts.PaletteScaleMode.Repeat, new DevExpress.XtraCharts.PaletteEntry[] { + //new DevExpress.XtraCharts.PaletteEntry(System.Drawing.Color.FromArgb(((int)(((byte)(103)))), ((int)(((byte)(174)))), ((int)(((byte)(197))))), System.Drawing.Color.FromArgb(((int)(((byte)(103)))), ((int)(((byte)(174)))), ((int)(((byte)(197)))))), + //new DevExpress.XtraCharts.PaletteEntry(System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(236)))), ((int)(((byte)(240))))), System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(236)))), ((int)(((byte)(240))))))})); + //chart.PaletteName = "Palette 1"; + //var series = new DevExpress.XtraCharts.Series(); + //series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; + //series.Name = "Series 1"; + ////series.SeriesID = 0; + //var doughnutSeriesView = new DevExpress.XtraCharts.DoughnutSeriesView(); + //doughnutSeriesView.HoleRadiusPercent = 45; + //doughnutSeriesView.TotalLabel.DXFont = new DevExpress.Drawing.DXFont("Tahoma", 12F, DevExpress.Drawing.DXFontStyle.Bold); + //doughnutSeriesView.TotalLabel.Visible = true; + //series.View = doughnutSeriesView; + //chart.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series }; + //chart.SizeF = new System.Drawing.SizeF(175F, 185F); + //chart.StylePriority.UseBackColor = false; + //chart.StylePriority.UsePadding = false; + + //series.Points.Add(new SeriesPoint("璇樊", 15)); + //series.Points.Add(new SeriesPoint("鍏朵粬", 85)); + + //doughnutSeriesView.TotalLabel.TextPattern = string.Format("{0:0%}", 0.15); + + //this.Detail.Controls.Add(chart); + } + } } + //鍒涘缓涓�绾ф爣棰� + private XRLabel CreateFirstCaption(string caption, float sizeX, float sizeY, float locationX, float locationY) + { + var lab = new XRLabel(); + lab.AnchorHorizontal = (DevExpress.XtraReports.UI.HorizontalAnchorStyles.Left | DevExpress.XtraReports.UI.HorizontalAnchorStyles.Right); + lab.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold); + lab.LocationFloat = new DevExpress.Utils.PointFloat(locationX, locationY); + lab.Multiline = true; + lab.Name = "lab"; + lab.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + lab.SizeF = new System.Drawing.SizeF(sizeX, sizeY); + lab.StylePriority.UseFont = false; + lab.StylePriority.UseTextAlignment = false; + lab.Text = caption; + lab.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + return lab; + } + + //鍒涘缓绮惧害姣斾緥 + private XRChart CreateAccuracyScale(SimulationPrintAccuracyScaleViewModel scale, float sizeX, float sizeY, float locationY) + { + var chart = new XRChart(); + chart.BackColor = System.Drawing.Color.Transparent; + chart.BorderColor = System.Drawing.Color.Black; + chart.Borders = DevExpress.XtraPrinting.BorderSide.All; + chart.Legend.Name = "Default Legend"; + chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; + chart.LocationFloat = new DevExpress.Utils.PointFloat(0F, locationY); + chart.Name = "chart"; + chart.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 10, 20, 20, 100F); + + var series = new DevExpress.XtraCharts.Series(); + series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; + series.Name = "Series"; + var doughnutSeriesView = new DevExpress.XtraCharts.DoughnutSeriesView(); + doughnutSeriesView.HoleRadiusPercent = 45; + doughnutSeriesView.TotalLabel.DXFont = new DevExpress.Drawing.DXFont("Tahoma", 12F, DevExpress.Drawing.DXFontStyle.Bold); + doughnutSeriesView.TotalLabel.Visible = true; + series.View = doughnutSeriesView; + series.Label.LineVisibility = DevExpress.Utils.DefaultBoolean.True; + series.Label.TextPattern = "{A}锛歿VP:P1}"; + chart.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series }; + chart.SizeF = new System.Drawing.SizeF(sizeX, sizeY); + chart.StylePriority.UseBackColor = false; + chart.StylePriority.UsePadding = false; + + if (scale.Items != null && scale.Items.Count > 0) + { + foreach (var item in scale.Items) + { + series.Points.Add(new SeriesPoint(item.EvaluateItem, item.EvaluateCount)); + } + } + doughnutSeriesView.TotalLabel.TextPattern = string.Format("{0:0%}", (scale.AvgError ?? 0) / 100F); + return chart; + } + + //鍒涘缓绮惧害椤� + private XRChart CreateAccuracyItem(double value, float sizeX, float sizeY, float locationX, float locationY) + { + var chart = new XRChart(); + chart.BackColor = System.Drawing.Color.Transparent; + chart.BorderColor = System.Drawing.Color.Black; + chart.Borders = DevExpress.XtraPrinting.BorderSide.All; + chart.Legend.Name = "Default Legend"; + chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; + chart.LocationFloat = new DevExpress.Utils.PointFloat(locationX, locationY); + chart.Name = "chart"; + chart.Padding = new DevExpress.XtraPrinting.PaddingInfo(10, 10, 20, 20, 100F); + chart.PaletteRepository.Add("Palette 1", new DevExpress.XtraCharts.Palette("Palette 1", DevExpress.XtraCharts.PaletteScaleMode.Repeat, new DevExpress.XtraCharts.PaletteEntry[] { + new DevExpress.XtraCharts.PaletteEntry(System.Drawing.Color.FromArgb(((int)(((byte)(103)))), ((int)(((byte)(174)))), ((int)(((byte)(197))))), System.Drawing.Color.FromArgb(((int)(((byte)(103)))), ((int)(((byte)(174)))), ((int)(((byte)(197)))))), + new DevExpress.XtraCharts.PaletteEntry(System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(236)))), ((int)(((byte)(240))))), System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(236)))), ((int)(((byte)(240))))))})); + chart.PaletteName = "Palette 1"; + + var series = new DevExpress.XtraCharts.Series(); + series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; + series.Name = "Series"; + var doughnutSeriesView = new DevExpress.XtraCharts.DoughnutSeriesView(); + doughnutSeriesView.HoleRadiusPercent = 45; + doughnutSeriesView.TotalLabel.DXFont = new DevExpress.Drawing.DXFont("Tahoma", 12F, DevExpress.Drawing.DXFontStyle.Bold); + doughnutSeriesView.TotalLabel.Visible = true; + series.View = doughnutSeriesView; + chart.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series }; + chart.SizeF = new System.Drawing.SizeF(sizeX, sizeY); + chart.StylePriority.UseBackColor = false; + chart.StylePriority.UsePadding = false; + + var otherValue = 100 - value; + series.Points.Add(new SeriesPoint("璇樊", value)); + series.Points.Add(new SeriesPoint("鍏朵粬", otherValue)); + + doughnutSeriesView.TotalLabel.TextPattern = string.Format("{0:0%}", value / 100f); + return chart; + } + + // 鍒涘缓琛ㄥご鍗曞厓鏍� private XRTableCell CreateTableCell(string text, int width) { -- Gitblit v1.9.3