123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874 |
- using DevExpress.Charts.Model;
- using DevExpress.Utils;
- using DevExpress.XtraCharts;
- using DevExpress.XtraReports.UI;
- using NPOI.Util;
- using OTSIncAReportApp._1_UI.Control_DEVCharts;
- using OTSIncAReportApp.DataOperation.DataAccess;
- using OTSIncAReportApp.OTSRstMgrFunction;
- using OTSIncAReportApp.OTSSampleReportInfo;
- using OTSIncAReportApp.SysMgrTools;
- using OTSIncAReportGrids;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Windows.Forms;
- using System.Xml;
- using static System.Net.WebRequestMethods;
- namespace OTSIncAReportApp.Control_ECharts
- {
- /// <summary>
- /// 各图char相关模块
- /// </summary>
- public partial class DEVChart_ParticlesComposition : UserControl
- {
- Hashtable table;
- #region 图表相关变量
- //y轴名称
- public string m_str_AxisY { get; set; }
- //数据图类型:常用夹杂物分类CommonlyUsedClassify ,颗粒成分PComponent,元素成分EComponent,颗粒尺寸分布PSize
- string ComSel { get; set; }
- public bool Report { get; set; }
- frmReportApp m_ReportApp;
- private frmReportConditionChoose m_conditionChoose;
- private ResultDataMgr m_DataMgr;
- private List<DataTable> prListData = new List<DataTable>();
- private List<string> prListString = new List<string>();
- #endregion
- #region 窗体加载及构造函数
- public DEVChart_ParticlesComposition(frmReportApp ReportApp, string comsel)
- {
- ComSel = comsel;
- m_ReportApp = ReportApp;
- m_conditionChoose = ReportApp.m_conditionChoose;
- m_DataMgr = ReportApp.m_rstDataMgr;
- InitializeComponent();
- //国际化
- Language lan = new Language();
- table = lan.GetNameTable("CompositionDistributionGrid");
- comboBox1.SelectedIndex = 0;
- }
- private void EChart_ParticlesComposition_Load(object sender, EventArgs e)
- {
- string sou = "";
- int sel = 0;//选择颗粒范围(0为全部颗粒1为选择颗粒)
- if (Report)
- {
- sou = m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResultId()].anotherFileName.ToString();
- sel = 0;
- }
- else
- {
- sou = m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
- sel = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
- }
- Report = false;
- if (m_ReportApp.more)
- {
- m_ReportApp.trans = false;
- }
- else
- {
- m_ReportApp.trans = true;
- }
- m_ReportApp.more = true;
- List<DataTable> list_dt = GetListJsonStr();
- bool bl = false;
- for (int i=0;i< list_dt.Count;i++)
- {
- if (list_dt[i].Rows.Count>0)
- {
- bl = true;
- }
- }
-
- List<DataTable> listDt = new List<DataTable>();
- for (int i=0;i< list_dt.Count;i++)
- {
- DataTable dt = list_dt[i].Clone();
- for (int a=0;a< list_dt[i].Rows.Count;a++)
- {
- if (list_dt[i].Rows[a]["name"].ToString() != "")
- {
- dt.Rows.Add(list_dt[i].Rows[a].ItemArray);
- }
- }
- listDt.Add(dt);
- }
- prListData = listDt.Copy();
- prListString.Clear();
- for (int i = 0; i < list_dt.Count; i++)
- {
- ResultFile resultFile = m_DataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
- string str = resultFile.anotherFileName;
- prListString.Add(str);
- }
-
- panel1.Dock = DockStyle.Fill;
- chartControl1.Dock = DockStyle.Fill;
- int sel_pro = m_conditionChoose.m_conditionData.ProItemProIndex();
- if (sel_pro == 2)
- {
- comboBox1.Visible = false;
- Graphics_Stacking(list_dt[0]);
- }
- else
- {
- comboBox1.Visible = true;
- Graphics();
- }
-
- }
- #endregion
- #region 获取单数据源
- private DataTable ClassificationIntegration(string path, int sel)
- {
- //------------------加载模块,获取数据-------------------------------------------------
- ResultGrid ls_resultgrid = new ResultGrid(m_ReportApp);
- Dictionary<string, string> keyValues_ResultGrid = ls_resultgrid.GetData_ResultGrid_Report();
- //------------------加载模块,获取数据结束----------------------------------------------
- Dictionary<string, string>.Enumerator en = keyValues_ResultGrid.GetEnumerator();
- string str_SCZS = "";
- keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col5"].ToString(), out str_SCZS);//视场总数
- DataOperation.DataAccess.ParticleData particledata = new DataOperation.DataAccess.ParticleData(path);
- DataTable data = new DataTable();
- data = particledata.GetAreaByAllIncA("");//获取所有分类面积和数量信息
- if (data.Rows.Count == 0)
- {
- return data;
- }
- DataTable AreaInformationOfAllElements = ConSolidateInvalid(data);
- DataTable AllAnalysisDetails = new DataTable();
- AllAnalysisDetails.Columns.Add("Name");
- AllAnalysisDetails.Columns.Add("TypeId");
- AllAnalysisDetails.Columns.Add("Area", typeof(double));
- AllAnalysisDetails.Columns.Add("Class");
- AllAnalysisDetails.Columns.Add("Cunt", typeof(double));
- for (int i = 0; i < AreaInformationOfAllElements.Rows.Count; i++)
- {
- DataRow dr2 = AllAnalysisDetails.NewRow();
- dr2["Name"] = AreaInformationOfAllElements.Rows[i]["TypeName"].ToString();
- dr2["Area"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["ar"]);
- dr2["TypeId"] = AreaInformationOfAllElements.Rows[i]["TypeId"].ToString();
- dr2["Cunt"] = Convert.ToDouble(AreaInformationOfAllElements.Rows[i]["con"]);
- dr2["Class"] = AreaInformationOfAllElements.Rows[i]["GroupName"].ToString();
- AllAnalysisDetails.Rows.Add(dr2);
- }
- //按照list列表进行物质类排序,物质类中的元素分类按照面积的大小进行排序
- List<string> ClassName = new List<string>();
- DataTable getClass_dt = particledata.GetAllClass();
- for (int i = 0; i < getClass_dt.Rows.Count; i++)
- {
- ClassName.Add(getClass_dt.Rows[i]["GroupName"].ToString());
- }
- DataTable AreaRatio = new DataTable();
- AreaRatio.TableName = "InclusionAreaRatio";
- AreaRatio.Columns.Add("e1");
- AreaRatio.Columns.Add("e2");
- AreaRatio.Columns.Add("e3", typeof(double));
- AreaRatio.Columns.Add("e4");
- AreaRatio.Columns.Add("e5");
- AreaRatio.Columns.Add("Cunt", typeof(int));
- //获取夹杂物的总面积用于计算夹杂物类别的占比(gridview最后一个固定是未识别颗粒,要排除未识别颗粒所以for循环至grid view长度减一)
- double totalInclusionArea = 0;
- totalInclusionArea = Convert.ToDouble(decimal.Parse(AllAnalysisDetails.Compute("sum(Area)", "").ToString()));
- for (int i = 0; i < AllAnalysisDetails.Rows.Count; i++)
- {
- DataRow dr2 = AreaRatio.NewRow();
- dr2["e1"] = AllAnalysisDetails.Rows[i]["Class"].ToString();
- dr2["e2"] = AllAnalysisDetails.Rows[i]["Name"].ToString();
- dr2["e3"] = Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]);
- dr2["e4"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / totalInclusionArea) * 100, 2);
- dr2["e5"] = Math.Round((Convert.ToDouble(AllAnalysisDetails.Rows[i]["Area"]) / Convert.ToDouble(str_SCZS)) * 100, 4);
- dr2["Cunt"] = AllAnalysisDetails.Rows[i]["Cunt"].ToString();
- AreaRatio.Rows.Add(dr2);
- }
- DataTable AreaRatio_dt = AreaRatio.Copy();
- AreaRatio_dt.Clear();
- for (int i = 0; i < ClassName.Count(); i++)
- {
- DataTable dt = AreaRatio.Copy();
- dt.Clear();
- for (int a = 0; a < AreaRatio.Rows.Count; a++)
- {
- if (AreaRatio.Rows[a]["e1"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(AreaRatio.Rows[a].ItemArray);
- }
- }
- DataView dv = dt.DefaultView;
- dv.Sort = "e3 DESC";
- DataTable dt_Element = dv.ToTable();
- for (int a = 0; a < dt_Element.Rows.Count; a++)
- {
- AreaRatio_dt.Rows.Add(dt_Element.Rows[a].ItemArray);
- }
- }
- DataTable AllAnalysisDetails1 = AreaRatio_dt.Copy();
- AllAnalysisDetails1.Clear();
- for (int i = 0; i < ClassName.Count; i++)
- {
- DataTable dt = AreaRatio_dt.Copy();
- dt.Clear();
- for (int a = 0; a < AreaRatio_dt.Rows.Count; a++)
- {
- if (AreaRatio_dt.Rows[a]["e1"].ToString() == ClassName[i].ToString())
- {
- dt.Rows.Add(AreaRatio_dt.Rows[a].ItemArray);
- }
- }
- if (dt.Rows.Count > 0)
- {
- double totalInclusionArea2 = Convert.ToDouble(decimal.Parse(AreaRatio_dt.Compute("sum(e3)", "").ToString()));
- double Area = Convert.ToDouble(decimal.Parse(dt.Compute("sum(e3)", "").ToString()));
- int cunt = Convert.ToInt32(decimal.Parse(dt.Compute("sum(Cunt)", "").ToString()));
- DataRow dr3 = AllAnalysisDetails1.NewRow();
- dr3["e1"] = ClassName[i].ToString();
- dr3["e3"] = Math.Round(Area, 2);
- dr3["e4"] = Math.Round((Convert.ToDouble(dt.Rows[0]["e3"]) / totalInclusionArea2) * 100, 2);
- dr3["e5"] = Math.Round((Convert.ToDouble(dt.Rows[0]["e3"]) / Convert.ToDouble(str_SCZS)) * 100, 4);
- dr3["Cunt"] = cunt;
- AllAnalysisDetails1.Rows.Add(dr3);
- }
- }
- return AllAnalysisDetails1;
- }
- private DataTable ConSolidateInvalid(DataTable dt)
- {
- DataTable dt_invalid = dt.Clone();
- DataTable dt_no_invalid = dt.Clone();
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- if (dt.Rows[i]["TypeName"].ToString() == "Invalid")
- {
- dt_invalid.Rows.Add(dt.Rows[i].ItemArray);
- }
- else
- {
- dt_no_invalid.Rows.Add(dt.Rows[i].ItemArray);
- }
- }
- return dt_no_invalid;
- }
- private string getWhere(string max, string min, string col)
- {
- if (col == "Area")
- {
- return col + ">=" + ((Convert.ToDouble(min) / 2) * (Convert.ToDouble(min) / 2) * Math.PI).ToString() + " and " + col + "<" + ((Convert.ToDouble(max) / 2) * (Convert.ToDouble(max) / 2) * Math.PI).ToString();
- }
- else
- {
- return col + ">=" + min + " and " + col + "<" + max;
- }
-
- }
- #endregion
- #region echarts
- /// <summary>
- /// 按照颗粒类别重新显示chart图
- /// </summary>
- public void DisplayTheChartAgainByParticleCategory(ReportCondition sourceGridData)
- {
- string stdId = "";
- int stdIdIndex = 0;
- //find the stdId condition
- var STDIdItm = sourceGridData.ConditionItemList.Find(s => s.iItemId == OTS_REPORT_PROP_GRID_ITEMS.STD_ID);
- if (STDIdItm != null)
- {
- stdId = STDIdItm.itemDisplayVal.ToString();
- stdIdIndex = STDIdItm.comboDownList.IndexOf(stdId);
- }
- string sou = "";
- int sel = 0;//选择颗粒范围(0为全部颗粒1为选择颗粒)
- if (Report)
- {
- sou = m_DataMgr.ResultFilesList[m_DataMgr.GetWorkingResultId()].anotherFileName.ToString();
- sel = 0;
- }
- else
- {
- sou = m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
- sel = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
- }
- Report = false;
- if (m_ReportApp.more)
- {
- m_ReportApp.trans = false;
- }
- else
- {
- m_ReportApp.trans = true;
- }
- m_ReportApp.more = true;
- List<DataTable> list_dt = GetListJsonStr();
- bool bl = false;
- for (int i = 0; i < list_dt.Count; i++)
- {
- if (list_dt[i].Rows.Count > 0)
- {
- bl = true;
- }
- }
- List<DataTable> listDt = new List<DataTable>();
- for (int i = 0; i < list_dt.Count; i++)
- {
- DataTable dt = list_dt[i].Clone();
- for (int a = 0; a < list_dt[i].Rows.Count; a++)
- {
- if (list_dt[i].Rows[a]["name"].ToString() != "")
- {
- dt.Rows.Add(list_dt[i].Rows[a].ItemArray);
- }
- }
- listDt.Add(dt);
- }
- prListData = listDt.Copy();
- prListString.Clear();
- for (int i = 0; i < list_dt.Count; i++)
- {
- ResultFile resultFile = m_DataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
- string str = resultFile.anotherFileName;
- prListString.Add(str);
- }
- panel1.Dock = DockStyle.Fill;
- chartControl1.Dock = DockStyle.Fill;
- //int sel_pro = m_conditionChoose.m_conditionData.ProItemProIndex();
- //if (sel_pro == 2)
- //{
- comboBox1.Visible = false;
- Graphics_Stacking(list_dt[0],stdId);
- //}
- //else
- //{
- // comboBox1.Visible = true;
- // Graphics();
- //}
- }
-
- /// <summary>
- /// 通过m_list_chartstruct,组合json数据格式
- /// </summary>
- /// <returns></returns>
- private List<DataTable> GetListJsonStr()
- {
- int sel = m_conditionChoose.m_conditionData.ProItemProIndex();
- string filedAndParticl = "";
- DataOperation.DataAccess.ParticleData particledata = null;
- DataTable dt = new DataTable();
- List<DataTable> ListData = new List<DataTable>();
- string sou = m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
- for (int i = 0; i < sou.Split('+').Length; i++)
- {
- ResultFile resultFile = m_DataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
- if (resultFile == null)
- {
- continue;
- }
- particledata = new DataOperation.DataAccess.ParticleData(resultFile.FilePath);
- switch (ComSel)
- {
- case "InclusionareaRatio":
- dt = particledata.GetAreaByAllIncA("");
- DataTable dtInclusionareaRatio = new DataTable();
- dtInclusionareaRatio.Columns.Add("name");
- dtInclusionareaRatio.Columns.Add("Cunt");
- for (int k = 0; k < dt.Rows.Count; k++)
- {
- string str = dt.Rows[k]["ar"].ToString();
- string name = dt.Rows[k]["TypeName"].ToString();
- if (Convert.ToInt32(dt.Rows[k]["TypeId"]) < 100)
- {
- continue;
- }
- DataRow dr = dtInclusionareaRatio.NewRow();
- dr["name"] = name;
- dr["Cunt"] = decimal.Round(decimal.Parse(dt.Rows[k]["ar"].ToString()), 2).ToString();
- dtInclusionareaRatio.Rows.Add(dr);
- }
- ListData.Add(dtInclusionareaRatio);
- break;
- case "CommonlyUsedClassify":
- //计算分类整个表的数据
- dt = ClassificationIntegration(resultFile.FilePath, sel);
- DataTable data = new DataTable();
- data.Columns.Add("name");
- data.Columns.Add("Cunt");
- for (int a = 0; a < dt.Rows.Count; a++)
- {
- DataRow dr = data.NewRow();
- dr["name"] = dt.Rows[a]["e1"].ToString();
- dr["Cunt"] = dt.Rows[a]["Cunt"].ToString();
- data.Rows.Add(dr);
- }
- ListData.Add(data);
- break;
- case "PComponent":
- //创建新的图形数据源
- dt = particledata.GetParticleListByIncA("area");
- DataTable dtPComponent = new DataTable();
- dtPComponent.Columns.Add("name");
- dtPComponent.Columns.Add("Cunt");
- for (int a = 0; a < dt.Rows.Count; a++)
- {
- if (Convert.ToInt32(dt.Rows[a]["TypeId"]) < 100)
- {
- continue;
- }
- DataRow dr = dtPComponent.NewRow();
- dr["name"] = dt.Rows[a]["TypeName"].ToString();
- dr["Cunt"] = dt.Rows[a]["con"].ToString();
- dtPComponent.Rows.Add(dr);
- }
- ListData.Add(dtPComponent);
- break;
- case "EComponent":
- //创建新的图形数据源
- dt = particledata.GetElementForArea(filedAndParticl);
- DataTable dtEComponent = new DataTable();
- dtEComponent.Columns.Add("name");
- dtEComponent.Columns.Add("Cunt");
- for (int k = 0; k < dt.Rows.Count; k++)
- {
- string str = dt.Rows[k]["earea"].ToString();
- try
- {
- DataRow dr = dtEComponent.NewRow();
- dr["name"] = dt.Rows[k]["name"].ToString();
- dr["Cunt"] = decimal.Round(decimal.Parse(str), 2).ToString();
- dtEComponent.Rows.Add(dr);
- }
- catch
- {
- DataRow dr = dtEComponent.NewRow();
- dr["name"] = dt.Rows[k]["name"].ToString();
- dr["Cunt"] = str;
- dtEComponent.Rows.Add(dr);
- }
- }
- ListData.Add(dtEComponent);
- break;
- case "PSize":
-
- //获取粒级表
- string pathe = m_DataMgr.m_RptConfigFile.PartSizeFileFolder + m_DataMgr.m_RptConfigFile.PartSizeFile;
- DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(pathe);
- string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString();
- List<string> temp = new List<string>();
- for (int j = 0; j < sizestr.Split(',').Length - 1; j++)
- {
- if (sizestr.Split(',')[j].Length > 0)
- {
- double d1 = Convert.ToDouble(sizestr.Split(',')[j]);
- double d2 = Convert.ToDouble(sizestr.Split(',')[j + 1]);
- string name = d1.ToString() + "~" + d2.ToString();
- temp.Add(name);
- }
- }
- double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]);
- string name1 = d.ToString() + "~MAX";
- temp.Add(name1);
- string con = m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE).ToString();
- string po = "";
- switch (con)
- {
- case "DMAX":
- po = "DMAX";
- break;
- case "DMIN":
- po = "DMIN";
- break;
- case "ECD":
- po = "Area";
- break;
- case "FERET":
- po = "DFERET";
- break;
- }
- var dpd= DataProcessing(particledata,po, temp);
- ListData.Add(dpd);
- break;
- }
- }
- return ListData;
- }
- private DataTable DataProcessing(ParticleData particledata,string po, List<string> temp)
- {
- DataTable pos_dt = particledata.GetParticleListForParticlSize("area", "");
- DataTable pos_AreaInformationOfAllElements = particledata.GetAreaByAllIncA("");
- DataTable pos_dtp = particledata.GetParticleAll("");
- List<string> colid = new List<string>() { "name", "ar", "TypeId", "Largest", "Class", "GroupId", "con" };
- DataTable m_bt_DBData = new DataTable();
- for (int i = 0; i < temp.Count; i++)
- {
- colid.Add(temp[i].ToString());
- }
- for (int i = 0; i < colid.Count; i++)
- {
- m_bt_DBData.Columns.Add(colid[i].ToString());
- }
- for (int i = 0; i < pos_dt.Rows.Count; i++)
- {
- DataRow dr = m_bt_DBData.NewRow();
- dr["name"] = pos_dt.Rows[i]["TypeName"].ToString();
- dr["TypeId"] = pos_dt.Rows[i]["TypeId"].ToString();
- dr["con"] = pos_dt.Rows[i]["con"].ToString();
- dr["GroupId"] = pos_dt.Rows[i]["GroupId"].ToString();
- if (pos_dt.Rows[i]["GroupName"].ToString() == "")
- dr["Class"] = "Default";
- else
- dr["Class"] = pos_dt.Rows[i]["GroupName"].ToString();
- //continue;
- dr["Largest"] = Math.Round(Convert.ToDouble(pos_dt.Rows[i]["max"]), 2);
- for (int a = 7; a < colid.Count; a++)
- {
- string d1 = colid[a].Split('~')[0];
- string d2 = colid[a].Split('~')[1];
- if (d2 == "MAX")
- {
- d2 = "999";
- }
- DataRow[] datas = pos_dtp.Select(getWhere(d2, d1, po, pos_dt.Rows[i]["TypeId"].ToString()));
- dr[colid[a]] = datas.Count();
- }
- for (int a = 0; a < pos_AreaInformationOfAllElements.Rows.Count; a++)
- {
- if (pos_dt.Rows[i]["TypeId"].ToString() == pos_AreaInformationOfAllElements.Rows[a]["TypeId"].ToString())
- {
- dr["ar"] = pos_AreaInformationOfAllElements.Rows[a]["ar"];
- }
- }
- m_bt_DBData.Rows.Add(dr);
- }
- return m_bt_DBData;
- }
- private string getWhere(string max, string min, string col, string partic)
- {
- if (col == "Area")
- {
- return col + ">=" + ((Convert.ToDouble(min) / 2) * (Convert.ToDouble(min) / 2) * Math.PI).ToString() + " and " + col + "<" + ((Convert.ToDouble(max) / 2) * (Convert.ToDouble(max) / 2) * Math.PI).ToString() + " and TypeId=" + partic;
- }
- else
- {
- return col + ">=" + min + " and " + col + "<" + max + " and TypeId=" + partic;
- }
- }
- #endregion
- private void Graphics_Stacking(DataTable dt,string stdId)
- {
- chartControl1.Series.Clear();
- DataTable dataTable = new DataTable();
- dataTable.Columns.Add("name");
- dataTable.Columns.Add("size");
- if (stdId != "All")
- {
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- if (dt.Rows[i]["name"].ToString() == stdId)
- {
- for (int a = 7; a < dt.Columns.Count; a++)
- {
- DataRow dr = dataTable.NewRow();
- dr["name"] = dt.Columns[a].ColumnName;
- dr["size"] = Convert.ToInt16(dt.Rows[i][a]);
- dataTable.Rows.Add(dr);
- }
- }
- }
- }
-
- if (stdId == "All")
- {
- List<Series> seriesList = new List<Series>();
- DataTable data = new DataTable();
- data.Columns.Add("name");
- data.Columns.Add("range");
- data.Columns.Add("num");
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- for (int a = 7; a < dt.Columns.Count; a++)
- {
- DataRow dr = data.NewRow();
- dr["name"] = dt.Rows[i]["name"].ToString();
- dr["range"] = dt.Columns[a].ColumnName;
- dr["num"] = dt.Rows[i][a].ToString();
- data.Rows.Add(dr);
- }
- }
- foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
- {
- Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
- {
- LegendTextPattern = dr["name"].ToString(),
- ArgumentScaleType = ScaleType.Qualitative,
- };
- foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
- s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
- s.LabelsVisibility = DefaultBoolean.False;
- seriesList.Add(s);
- }
- foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
- {
- Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
- {
- LegendTextPattern = dr["name"].ToString(),
- ArgumentScaleType = ScaleType.Qualitative,
- };
- foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
- s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
- s.LabelsVisibility = DefaultBoolean.False;
- seriesList.Add(s);
- }
- foreach (Series sr in seriesList.ToArray())
- chartControl1.Series.Add(sr);
- }
- else
- {
-
-
- // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series
- Series series = new Series(stdId, ViewType.Bar);
- for (int a = 0; a < dataTable.Rows.Count; a++)
- {
- string name = dataTable.Rows[a]["name"].ToString();
- double Cunt = Convert.ToDouble(dataTable.Rows[a]["size"]);
- series.Points.Add(new SeriesPoint(name, Cunt));
- }
- series.LabelsVisibility = DefaultBoolean.True;
- chartControl1.Series.Add(series);
-
- }
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "";
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = "";
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility = DefaultBoolean.True;
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Visibility = DefaultBoolean.True;
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma", 9);
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Font = new Font("Tahoma", 9);
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Alignment = System.Drawing.StringAlignment.Far;
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Alignment = System.Drawing.StringAlignment.Far;
- //图例的位置定义
- chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
- chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
- chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
- chartControl1.Legend.Direction = LegendDirection.TopToBottom;
- //十字准线光标
- chartControl1.CrosshairEnabled = DefaultBoolean.True;
- chartControl1.CrosshairOptions.ShowValueLine = true;
- chartControl1.CrosshairOptions.ShowArgumentLabels = true;
- }
- private void Graphics_Stacking(DataTable dt)
- {
- chartControl1.Series.Clear();
- List<Series> seriesList = new List<Series>();
- DataTable data = new DataTable();
- data.Columns.Add("name");
- data.Columns.Add("range");
- data.Columns.Add("num");
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- for (int a = 7; a < dt.Columns.Count; a++)
- {
- DataRow dr = data.NewRow();
- dr["name"] = dt.Rows[i]["name"].ToString();
- dr["range"] = dt.Columns[a].ColumnName;
- dr["num"] = dt.Rows[i][a].ToString();
- data.Rows.Add(dr);
- }
- }
- foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
- {
- Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
- {
- LegendTextPattern = dr["name"].ToString(),
- ArgumentScaleType = ScaleType.Qualitative,
- };
- foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
- s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
- s.LabelsVisibility = DefaultBoolean.False;
- seriesList.Add(s);
- }
- foreach (DataRow dr in data.DefaultView.ToTable(true, "name").Rows)
- {
- Series s = new Series(dr["name"].ToString(), ViewType.StackedBar)
- {
- LegendTextPattern = dr["name"].ToString(),
- ArgumentScaleType = ScaleType.Qualitative,
- };
- foreach (DataRow drl in data.Select("name='" + dr["name"].ToString() + "'"))
- s.Points.Add(new SeriesPoint(drl["range"].ToString(), int.Parse(drl["num"].ToString())));
- s.LabelsVisibility = DefaultBoolean.False;
- seriesList.Add(s);
- }
- foreach (Series sr in seriesList.ToArray())
- chartControl1.Series.Add(sr);
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "";
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = "";
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility = DefaultBoolean.True;
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Visibility = DefaultBoolean.True;
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma", 9);
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Font = new Font("Tahoma", 9);
- ((XYDiagram)chartControl1.Diagram).AxisY.Title.Alignment = System.Drawing.StringAlignment.Far;
- ((XYDiagram)chartControl1.Diagram).AxisX.Title.Alignment = System.Drawing.StringAlignment.Far;
- //图例的位置定义
- chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
- chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
- chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
- chartControl1.Legend.Direction = LegendDirection.TopToBottom;
- //十字准线光标
- chartControl1.CrosshairEnabled = DefaultBoolean.True;
- chartControl1.CrosshairOptions.ShowValueLine = true;
- chartControl1.CrosshairOptions.ShowArgumentLabels = true;
- }
- private void Graphics()
- {
- chartControl1.Series.Clear();
- for (int i = 0; i < prListData.Count; i++)
- {
- string str = prListString[i];
- // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series
- Series series = new Series(str, ViewType.Bar);
-
- for (int a = 0; a < prListData[i].Rows.Count; a++)
- {
- string name = prListData[i].Rows[a]["name"].ToString();
- double Cunt = Convert.ToDouble(prListData[i].Rows[a]["Cunt"]);
- series.Points.Add(new SeriesPoint(name, Cunt));
- }
- series.LabelsVisibility = DefaultBoolean.True;
- chartControl1.Series.Add(series);
-
- }
-
- //图例的位置定义
- chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
- chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
- chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
- chartControl1.Legend.Direction = LegendDirection.TopToBottom;
- //十字准线光标
- chartControl1.CrosshairEnabled = DefaultBoolean.True;
- chartControl1.CrosshairOptions.ShowValueLine = true;
- chartControl1.CrosshairOptions.ShowArgumentLabels = true;
- DevFunctions.ChangeView2(chartControl1, comboBox1.Text);
- }
-
- private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
- {
- Graphics();
- }
- }
- }
|