dev ChartControl 备忘

一个chartControl 里包括以个diagram(图表)

diagram里可以设置 x-axis与y-axis ,另外还可以设置SecondaryXAxis与SecondaryYAxis,在Series属性里可以选择使用Secondary Axis

一个diagram里包括多少个Series,一个Series表示一组(x,y)取值集合

一个diagram里可以添加多个Panel, 二Series可以设置呈现在那个panel里

Series的主要属性是DataSource,指定 ArgumentDataMember(X-Axis),ValuesDataMembers(Y-Axis)

 

1.自定义标注显示内,首相要设置series.LablesVisibility=True

dev ChartControl 备忘
            chartControl1.CustomDrawSeriesPoint += (s, e) =>

            {

                if (e.Series == chartControl1.Series["Real"])

                {

                    var it = e.SeriesPoint;

                    var obj = it.Tag as QualifiedInfo; //Tag里是当前点的记录

                    e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);

                }

            };
View Code

 

参考代码

dev ChartControl 备忘
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Linq;

using System.Windows.Forms;

using DevExpress.XtraEditors;

using WinDetectionClockAdmin.Model;

using DevExpress.XtraCharts;

using System.Threading;

using DetectionClock.EFModel;

namespace WinDetectionClockAdmin

{

    public partial class frmPercentOfPassCharting : DevExpress.XtraEditors.XtraForm

    {

        private ChartControl CurCharControl { get; set; }

        public SynchronizationContext SyncContext { get; set; }

        public frmPercentOfPassCharting()

        {

            InitializeComponent();

            SyncContext = SynchronizationContext.Current;



            #region Tab

            layoutControlGroup3.Shown += (s, e) =>

            {

                CurCharControl = chartControl1;

            };

            layoutControlGroup4.Shown += (s, e) => { CurCharControl = chartControl2; };

            layoutControlGroup5.Shown += (s, e) => { CurCharControl = chartControl3; };

            layoutControlGroup6.Shown += (s, e) => { CurCharControl = chartControl4; };

            #endregion

            #region 自自定义Lbl显示

            chartControl1.CustomDrawSeriesPoint += (s, e) =>

            {

                if (e.Series == chartControl1.Series["Real"])

                {

                    var it = e.SeriesPoint;

                    var obj = it.Tag as QualifiedInfo;

                    e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);

                }

            };

            #endregion



            #region

            bDate.EditValue = DateTime.Now.Date.AddDays(1 - DateTime.Now.Day);

            eDate.EditValue = DateTime.Now.Date.Add(new TimeSpan(23, 59, 59));

            ThreadPool.QueueUserWorkItem(o =>

            {

                using (var ctx = DBCtx.GetCtx())

                {

                    var sql = DRecAnalyze.LoadSql("sql04.txt");

                    var mInfoList = ctx.ExecuteStoreQuery<MInfo>(sql).ToList();

                    var batnos = ctx.FO_Task.GroupBy(ent => ent.Batno).Select(ent => ent.Key).Where(ent => ent != null).ToList();

                    

                    var empList = ctx.FO_TaskEmps.ToList();



                    SyncContext.Post(s =>

                    {

                        team.Properties.DataSource = empList;

                        mno.Properties.DataSource = mInfoList;

                        batno.Properties.Items.AddRange(batnos.ToArray());

                    }, null);



                }

            }, null);



            #endregion

        }



        private void btnLoad_Click(object sender, EventArgs e)

        {

            try

            {

                var sql = DRecAnalyze.LoadSql("sql05.txt");

                if (bDate.EditValue == null) throw new Exception("请指定开始时间");

                if (eDate.EditValue == null) throw new Exception("请指定结束时间");

                var bTime=(DateTime)bDate.EditValue;

                var eTime=(DateTime)eDate.EditValue;



                var dCondition = string.Format(" And d.AddTime>='{0}' And d.AddTime<='{1}' ",

                    bTime.Date.ToString("yyyy-MM-dd 00:00:00"),

                    eTime.Date.ToString("yyyy-MM-dd 23:59:59")

                    );



                var tCondition = "";

                if (mno.EditValue != null )

                {

                    if (!string.IsNullOrWhiteSpace(mno.ToString()))

                    {

                        tCondition += string.Format(" And t.MNo='{0}'", mno.EditValue.ToString());

                    }

                }

                if (!string.IsNullOrWhiteSpace(batno.Text))

                {

                    tCondition += string.Format(" And t.BatNo='{0}'", batno.Text);

                }

                if (team.EditValue != null)

                {

                    if(!string.IsNullOrWhiteSpace(team.EditValue.ToString()))

                    {

                        dCondition += String.Format(" And d.TaskEmpsId={0}", team.EditValue);

                    }

                }

                var exeSql= sql.Replace("$DCondition", dCondition).Replace("$TCondition", tCondition);





                #region AsyncAction

                Action act = () =>

                {

                    var data = DRecAnalyze.LoadData(exeSql);

                    var list = DRecAnalyze.AnalyzePercentOfPass(data);





                    //所有不良项

                    var symptomList = DRecAnalyze.AnalyzeSymptom(data);



                    //生产部不良项

                    var assembleSymptomList = DRecAnalyze.AnalyzeAssembleSymptom(data);



                    //主要不良项

                    var mainSymptom = DRecAnalyze.AnalyzeMainSymptom(data);



                    SyncContext.Post(o =>

                    {

                        var diagram = chartControl1.Diagram as XYDiagram;

                        if (list.Count > 0)

                        {

                            diagram.AxisY.Range.MaxValue = Math.Floor(list.Max(ent => ent.Disqualification) * 1.6);

                        }

                        chartControl1.Series["Aim"].DataSource = list;

                        chartControl1.Series["Real"].DataSource = list;

                        chartControl1.Series["Disqualification"].DataSource = list;



                        chartControl2.Series["Symptom"].DataSource = symptomList;



                        chartControl3.Series["Symptom"].DataSource = assembleSymptomList;



                        chartControl4.Series[0].DataSource = mainSymptom;

                        chartControl4.Series[1].DataSource = mainSymptom;

                        chartControl4.Series[2].DataSource = mainSymptom;

                    }, null);

                };

                #endregion

                this.AsyncInvoke(act);

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }



        

                



        }



        private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)

        {

            SaveFileDialog fileDialog = new SaveFileDialog();

            fileDialog.Filter = "Excel文件|*.xls";

            fileDialog.FileName = this.Text + DateTime.Now.ToString("yyMMddHHmm");

            if (fileDialog.ShowDialog() == DialogResult.OK)

            {

                CurCharControl.ExportToXls(fileDialog.FileName);

                XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

            }

        }

    }

}
View Code

 

你可能感兴趣的:(chart)