ChartUtils.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using DevExpress.Utils;
  2. using DevExpress.XtraCharts;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. namespace FocasCncCollect.Helper
  8. {
  9. public static class ChartUtils
  10. {
  11. /// <summary>
  12. /// 增加数据筛选
  13. /// </summary>
  14. /// <param name="SeriesBase">Series</param>
  15. /// <param name="columnName">列名称</param>
  16. /// <param name="value">列名称对应的筛选数值</param>
  17. /// <param name="dataFilterCondition">DataFilterCondition枚举</param>
  18. public static void AddDataFilter(this SeriesBase series, string columnName, object value, DataFilterCondition dataFilterCondition)
  19. {
  20. //series.DataFilters.Add(new DataFilter(columnName, value.GetType().FullName, dataFilterCondition, value));
  21. }
  22. /// <summary>
  23. /// 设置X轴Lable角度
  24. /// </summary>
  25. /// <param name="chart">ChartControl</param>
  26. /// <param name="angle">角度</param>
  27. public static void SetXLableAngle(this ChartControl chart, int angle)
  28. {
  29. XYDiagram _xyDiagram = (XYDiagram)chart.Diagram;
  30. if (_xyDiagram != null)
  31. _xyDiagram.AxisX.Label.Angle = angle;
  32. }
  33. /// <summary>
  34. /// 设置Y轴Lable角度
  35. /// </summary>
  36. /// <param name="chart">ChartControl</param>
  37. /// <param name="angle">角度</param>
  38. public static void SetYLableAngle(this ChartControl chart, int angle)
  39. {
  40. XYDiagram _xyDiagram = (XYDiagram)chart.Diagram;
  41. _xyDiagram.AxisY.Label.Angle = angle;
  42. }
  43. /// <summary>
  44. /// 设置ColorEach
  45. /// </summary>
  46. /// <param name="chart">ChartControl</param>
  47. /// <param name="colorEach">是否设置成ColorEach</param>
  48. public static void SetColorEach(this Series series, bool colorEach)
  49. {
  50. SeriesViewColorEachSupportBase colorEachView = (SeriesViewColorEachSupportBase)series.View;
  51. if (colorEachView != null)
  52. {
  53. colorEachView.ColorEach = colorEach;
  54. }
  55. }
  56. /// <summary>
  57. /// 设置是否显示十字标线
  58. /// </summary>
  59. /// <param name="chart">ChartControl</param>
  60. /// <param name="crosshair">是否显示十字标线</param>
  61. public static void SetCrosshair(this ChartControl chart, bool crosshair)
  62. {
  63. chart.CrosshairEnabled = crosshair ? DefaultBoolean.True : DefaultBoolean.False;
  64. chart.CrosshairOptions.ShowArgumentLabels = crosshair;
  65. chart.CrosshairOptions.ShowArgumentLine = crosshair;
  66. chart.CrosshairOptions.ShowValueLabels = crosshair;
  67. chart.CrosshairOptions.ShowValueLine = crosshair;
  68. }
  69. /// <summary>
  70. /// 新增ChartControl的Title文字
  71. /// </summary>
  72. /// <param name="chart">ChartControl</param>
  73. /// <param name="title">Title文字</param>
  74. public static void AddTitle(this ChartControl chart, string title)
  75. {
  76. ChartTitle _title = new ChartTitle();
  77. _title.Text = title;
  78. chart.Titles.Add(_title);
  79. }
  80. /// <summary>
  81. /// 饼状Series设置成百分比显示
  82. /// </summary>
  83. /// <param name="series">Series</param>
  84. public static void SetPiePercentage(this Series series)
  85. {
  86. if (series.View is PieSeriesView)
  87. {
  88. #region 过时
  89. //((PiePointOptions)series.PointOptions).PercentOptions.ValueAsPercent = true;
  90. //((PiePointOptions)series.PointOptions).ValueNumericOptions.Format = NumericFormat.Percent;
  91. //((PiePointOptions)series.PointOptions).ValueNumericOptions.Precision = 0;
  92. #endregion
  93. series.Label.TextPattern = "{A:0.00%}";
  94. }
  95. }
  96. /// <summary>
  97. /// 将X轴格式化成时间轴
  98. /// </summary>
  99. /// <param name="chart">ChartControl</param>
  100. /// <param name="dateTimeMeasureUnit">X轴刻度单位</param>
  101. /// <param name="dateTimeGridAlignment">X轴刻度间距的单位</param>
  102. public static void SetTimeAxisX(this ChartControl chart, DateTimeMeasureUnit dateTimeMeasureUnit, DateTimeGridAlignment dateTimeGridAlignment)
  103. {
  104. XYDiagram _diagram = (XYDiagram)chart.Diagram;
  105. if (_diagram != null)
  106. {
  107. _diagram.AxisX.DateTimeScaleOptions.MeasureUnit = dateTimeMeasureUnit;
  108. _diagram.AxisX.DateTimeScaleOptions.GridAlignment = dateTimeGridAlignment;
  109. }
  110. }
  111. /// <summary>
  112. /// 将X轴格式化成时间轴
  113. /// </summary>
  114. /// <param name="chart">ChartControl</param>
  115. /// <param name="dateTimeMeasureUnit">X轴刻度单位</param>
  116. /// <param name="dateTimeGridAlignment">X轴刻度间距的单位</param>
  117. /// <param name="formatString">时间格式;eg:yyyy-MM</param>
  118. public static void SetTimeAxisX(this ChartControl chart, DateTimeMeasureUnit dateTimeMeasureUnit, DateTimeGridAlignment dateTimeGridAlignment, string formatString)
  119. {
  120. XYDiagram _diagram = (XYDiagram)chart.Diagram;
  121. if (_diagram != null)
  122. {
  123. _diagram.AxisX.DateTimeScaleOptions.MeasureUnit = dateTimeMeasureUnit;
  124. _diagram.AxisX.DateTimeScaleOptions.GridAlignment = dateTimeGridAlignment;
  125. //_diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom;
  126. _diagram.AxisX.Label.TextPattern = formatString;
  127. }
  128. }
  129. }
  130. }