/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="DateSpan">此图表的TimeSpan跨度</param> /// <param name="type">此图表的类型,则枚举DrawingType提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="date_ColNum">此测斜点的监测数据工作表中的每一天与其在工作表中对应的列号, /// 以监测数据的日期key索引数据所在列号item</param> /// <param name="usedRg">监测曲线的数据范围,此Range对象中, /// 包括此工作表的UsedRange中的第一列,即深度的数据;但是不包括第一行的日期数据</param> /// <param name="Info">记录数据信息的文本框</param> /// <param name="FirstSeriesTag">第一条数据系列对应的Tag信息</param> /// <param name="ProcessRegionData">在施工进度工作表中,每一个基坑区域相关的各种信息,比如区域名称,区域的描述, /// 区域数据的Range对象,区域所属的基坑ID及其ID的数据等</param> /// <remarks></remarks> public ClsDrawing_Mnt_Incline(Excel.Worksheet DataSheet, Excel.Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DateSpan DateSpan, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, Dictionary <DateTime, int> date_ColNum, Excel.Range usedRg, SeriesTag_Incline FirstSeriesTag, clsData_ProcessRegionData ProcessRegionData = null) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType, DateSpan, new clsDrawing_Mnt_RollingBase.SeriesTag(FirstSeriesTag.series, FirstSeriesTag.ConstructionDate)) { // // -------------------------------------------- try { ClsDrawing_Mnt_Incline with_1 = this; with_1.P_rgMntData = usedRg; //'包括第一列,但是不包括第一行的日期。 Excel.Range colRange = usedRg.Columns[1] as Excel.Range; with_1.F_YValues = ExcelFunction.ConvertRangeDataToVector <Single>(colRange); with_1.Information = Info; with_1._ExcavationDepth_lineAndTextbox = FirstSeriesTag; with_1.F_dicDateAndColumnNumber = date_ColNum; with_1.P_ProcessRegionData = ProcessRegionData; with_1._inclineTopElevaion = Project_Expo.InclineTopElevaion; // ----- 集合数据的记录 with_1.F_DicSeries_Tag[(int)LowIndexOfObjectsInExcel.SeriesInSeriesCollection] = FirstSeriesTag; // -----对图例进行更新--------- //Call LegendRefresh(List_HasCurve) } catch (Exception ex) { MessageBox.Show("构造测斜曲线图出错。" + "\r\n" + ex.Message + "\r\n" + ex.TargetSite.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="type">此图表所属的类型,由枚举drawingtype提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="Info">图表中用来显示相关信息的那个文本框对象</param> /// <param name="DrawingTag">每一个监测曲线图的相关信息</param> /// <param name="MonitorType">监测数据的类型,比如测斜数据、立柱垂直位移数据、支撑轴力数据等</param> /// <remarks></remarks> public ClsDrawing_Mnt_Base(Excel.Worksheet DataSheet, Microsoft.Office.Interop.Excel.Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DrawingType type, bool CanRoll, Excel.TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType) { try { //设置Excel窗口与Chart的尺寸 this.F_Application = ParentApp.Application; ExcelFunction.SetLocation_Size(this.ChartSize_sugested, DrawingChart, this.Application, true); // this.Sheet_Data = DataSheet; this.F_myChart = DrawingChart; this.F_textbox_Info = Info; this.Sheet_Drawing = DrawingChart.Parent.Parent; this.F_blnCanRoll = CanRoll; this.F_DrawingType = type; this.P_MntType = MonitorType; //将此对象添加进其所属的集合中 F_Class_ParentApp = ParentApp; // this.P_Key = System.Convert.ToInt32(F_Class_ParentApp.Mnt_Drawings.Add(this)); this.F_UniqueID = GeneralMethods.GetUniqueID(); // this.Tags = DrawingTag; } catch (Exception ex) { MessageBox.Show("创建基本监测曲线图出错。" + "\r\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="type">此图表所属的类型,由枚举drawingtype提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="Info">图表中用来显示相关信息的那个文本框对象</param> /// <param name="DrawingTag">每一个监测曲线图的相关信息</param> /// <param name="MonitorType">监测数据的类型,比如测斜数据、立柱垂直位移数据、支撑轴力数据等</param> /// <remarks></remarks> public ClsDrawing_Mnt_Static(Worksheet DataSheet, Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, Dictionary <Series, object[]> AllselectedData, double[] arrAllDate) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType, arrAllDate) { // ----------------------------------- // this.F_dicSeries = AllselectedData; }
/// <summary> /// 构造函数,构造时一定要设置好字典F_dicFourSeries的值。 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="type">此图表所属的类型,由枚举drawingtype提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="Info">图表中用来显示相关信息的那个文本框对象</param> /// <param name="DrawingTag">每一个监测曲线图的相关信息</param> /// <param name="MonitorType">监测数据的类型,比如测斜数据、立柱垂直位移数据、支撑轴力数据等</param> /// <remarks></remarks> public clsDrawing_Mnt_StaticBase(Worksheet DataSheet, Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, double[] Alldate) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType) { // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#. myChart = this.Chart; // this.F_arrAllDate = Alldate; this.currentPointsCount = Alldate.Length; }
/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="type">此图表所属的类型,由枚举drawingtype提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="Info">图表中用来显示相关信息的那个文本框对象</param> /// <param name="DrawingTag">每一个监测曲线图的相关信息</param> /// <param name="MonitorType">监测数据的类型,比如测斜数据、立柱垂直位移数据、支撑轴力数据等</param> /// <remarks></remarks> public ClsDrawing_Mnt_MaxMinDepth(Worksheet DataSheet, Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, double[] AllDate, DateMaxMinDepth Data) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType, AllDate) { // ----------------------------------- // this.F_dicSeries = new Dictionary <Series, object[]>(); SeriesCollection Sc = DrawingChart.SeriesCollection(); this.F_dicSeries.Add(Sc.Item(1), Data.Max); this.F_dicSeries.Add(Sc.Item(2), Data.Min); this.F_dicSeries.Add(Sc.Item(3), Data.Depth_Max); this.F_dicSeries.Add(Sc.Item(4), Data.Depth_Min); }
/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="type">此图表所属的类型,由枚举drawingtype提供</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="DateSpan">此图表的TimeSpan跨度</param> /// <remarks></remarks> public clsDrawing_Mnt_RollingBase(Excel.Worksheet DataSheet, Excel.Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DrawingType type, bool CanRoll, Excel.TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, DateSpan DateSpan, SeriesTag theFirstSeriesTag) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType) { // VBConversions Note: Non-static class variable initialization is below. Class variables cannot be initially assigned non-static values in C#. F_Chart = this.Chart; // this.DateSpan = DateSpan; //刷新滚动窗口的列表框的界面显示 APPLICATION_MAINFORM.MainForm.Form_Rolling.OnRollingDrawingsRefreshed(); //启用主界面的程序滚动按钮 APPLICATION_MAINFORM.MainForm.MainUI_RollingObjectCreated(); //--------------------------- 设置与数据系列的曲线相关的属性值 clsDrawing_Mnt_RollingBase with_1 = this; //以数据列中第一个元素作为进行滚动的那个series with_1.MovingSeries = theFirstSeriesTag.series; // ----- 集合数据的记录 with_1.F_DicSeries_Tag.Add(cst_LboundOfSeriesInCollection, theFirstSeriesTag); //刚开始时,图表中只有一条数据曲线 with_1.F_CurvesCount = 1; // this.F_List_HasCurve.Clear(); this.F_List_HasCurve.Add(true); //第一个数据列是有曲线的,所以将其值设置为true Excel.SeriesCollection seriesColl = Chart.SeriesCollection() as Excel.SeriesCollection; for (var i = 1; i <= seriesColl.Count - 1; i++) { this.F_List_HasCurve.Add(false); } // -----对图例进行更新--------- LegendRefresh(F_List_HasCurve); }
/// <summary> /// 构造函数 /// </summary> /// <param name="DataSheet">图表对应的数据工作表</param> /// <param name="DrawingChart">Excel图形所在的Chart对象</param> /// <param name="ParentApp">此图表所在的Excel类的实例对象</param> /// <param name="DateSpan">此图表的TimeSpan跨度</param> /// <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param> /// <param name="Date_ChosenDatum">一个字典,其关键字为监测数据表中有数据的每一天的日期, /// 对应的值为当天每一个被选择的监测点的监测数据,监测数据只包含列表中选择了的监测点</param> /// <param name="Info">记录数据信息的文本框</param> /// <remarks></remarks> public ClsDrawing_Mnt_OtherDynamics(Worksheet DataSheet, Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp, DateSpan DateSpan, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag, MntType MonitorType, Dictionary <DateTime, object[]> Date_ChosenDatum, clsDrawing_Mnt_RollingBase.SeriesTag SeriesTag) : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType, DateSpan, SeriesTag) { // ------------------------------------ //为进行滚动的那条数据曲线添加数据标签 //在数据点旁边显示数据值 this.MovingSeries.ApplyDataLabels(); //设置数据标签的格式 DataLabels dataLBs = this.MovingSeries.DataLabels(); dataLBs.NumberFormat = "0.00"; dataLBs.Format.TextFrame2.TextRange.Font.Size = 8; dataLBs.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = Information.RGB(0, 0, 0); dataLBs.Format.TextFrame2.TextRange.Font.Name = AMEApplication.FontName_TNR; P_dicDate_ChosenDatum = Date_ChosenDatum; //包括第一列,但是不包括第一行的日期。 // '' -----对图例进行更新--------- //Call LegendRefresh(Me.List_HasCurve) }
/// <summary> /// 按不同的监测数据类型返回对应的坐标轴标签 /// </summary> /// <param name="Drawing_Type"></param> /// <param name="MonitorType"></param> /// <param name="AxisType"></param> /// <param name="AxisGroup">此选项仅对绘制双Y轴或者双X轴的Chart时有效,否则设置了也不会进行处理。</param> /// <returns></returns> /// <remarks></remarks> public static string GetAxisLabel(DrawingType Drawing_Type, MntType MonitorType, XlAxisType AxisType, XlAxisGroup AxisGroup = XlAxisGroup.xlPrimary) { string strAxisLabel = ""; switch (Drawing_Type) { // --------------------- 动态测斜曲线图 ---------------------------------------------------- case DrawingType.Monitor_Incline_Dynamic: switch (AxisType) { case XlAxisType.xlCategory: strAxisLabel = AxisLabels.Displacement_mm; break; case XlAxisType.xlValue: strAxisLabel = AxisLabels.Depth; break; } break; // ------------------------ 测斜位移最值及对应深度 ------------------------------------------------- case DrawingType.Monitor_Incline_MaxMinDepth: switch (AxisType) { case XlAxisType.xlCategory: strAxisLabel = AxisLabels.ConstructionDate; break; case XlAxisType.xlValue: switch (AxisGroup) { case XlAxisGroup.xlPrimary: strAxisLabel = AxisLabels.Displacement_mm; break; case XlAxisGroup.xlSecondary: strAxisLabel = AxisLabels.Depth; break; } break; } break; // ----------------- 测斜以外的动态监测曲线曲线图 -------------------------------------------------------- case DrawingType.Monitor_Dynamic: switch (AxisType) { case XlAxisType.xlCategory: strAxisLabel = AxisLabels.Points; break; case XlAxisType.xlValue: switch (MonitorType) { case MntType.Struts: strAxisLabel = AxisLabels.AxialForce; break; case MntType.WaterLevel: strAxisLabel = AxisLabels.Displacement_m; break; default: strAxisLabel = AxisLabels.Displacement_mm; break; } break; } break; // ------------------------- 测斜以外的静态曲线图 ------------------------------------------------ case DrawingType.Monitor_Static: switch (AxisType) { case XlAxisType.xlCategory: strAxisLabel = AxisLabels.ConstructionDate; break; case XlAxisType.xlValue: switch (MonitorType) { case MntType.Struts: strAxisLabel = AxisLabels.AxialForce; break; case MntType.WaterLevel: strAxisLabel = AxisLabels.Displacement_m; break; default: strAxisLabel = AxisLabels.Displacement_mm; break; } break; } break; case DrawingType.Xls_SectionalView: switch (AxisType) { case XlAxisType.xlCategory: strAxisLabel = AxisLabels.Excavation; break; case XlAxisType.xlValue: strAxisLabel = AxisLabels.Elevation; break; } break; } return(strAxisLabel); }
/// <summary> /// 设置监测数据的类型 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks></remarks> public void ComboBox_MntType_SelectedValueChanged(object sender, EventArgs e) { LstbxDisplayAndItem item = (LstbxDisplayAndItem)this.ComboBox_MntType.SelectedItem; this.F_MonitorType = (MntType)item.Value; }