DevFunctions.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  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. using System.Threading.Tasks;
  8. namespace OTSIncAReportApp._1_UI.Control_DEVCharts
  9. {
  10. public static class DevFunctions
  11. {
  12. /// <summary>
  13. /// 饼状Series设置成百分比显示
  14. /// </summary>
  15. /// <param name="series">Series</param>
  16. public static void SetPiePercentage(this Series series)
  17. {
  18. if (series.View is PieSeriesView)
  19. {
  20. ((PiePointOptions)series.PointOptions).PercentOptions.ValueAsPercent = true;
  21. ((PiePointOptions)series.PointOptions).ValueNumericOptions.Format = NumericFormat.Percent;
  22. ((PiePointOptions)series.PointOptions).ValueNumericOptions.Precision = 0;
  23. }
  24. }
  25. /// <summary>
  26. /// 饼状Series设置显示格式,是以数字还是百分号显示
  27. /// </summary>
  28. /// <param name="series">Series</param>
  29. public static void SetPieNumber(Series series)
  30. {
  31. if (series.View is PieSeriesView)
  32. {
  33. //设置为值
  34. ((PiePointOptions)series.PointOptions).PercentOptions.ValueAsPercent = false;
  35. ((PiePointOptions)series.PointOptions).ValueNumericOptions.Format = NumericFormat.Number;
  36. ((PiePointOptions)series.PointOptions).ValueNumericOptions.Precision = 0;
  37. }
  38. }
  39. public static void SetAxisForXYDiagram(Diagram diagram)
  40. {
  41. //坐标标题的定义
  42. //坐标值说明的字体尺寸,颜色定义
  43. ((XYDiagram)diagram).AxisY.Title.TextColor = System.Drawing.Color.Black;
  44. //((XYDiagram)diagram).AxisY.Title.Text = "质量占比";
  45. ((XYDiagram)diagram).AxisY.Title.Visible = true;
  46. //((XYDiagram)diagram).AxisX.Title.Text = "矿物成分";
  47. ((XYDiagram)diagram).AxisX.Title.Visible = true;
  48. ((XYDiagram)diagram).AxisY.Visibility = DevExpress.Utils.DefaultBoolean.True;
  49. // Access the type-specific options of the diagram.
  50. ((XYDiagram)diagram).EnableAxisXZooming = true;
  51. }
  52. /// <summary>
  53. /// 饼状图突出设置
  54. /// </summary>
  55. /// <param name="chart">ChartControl</param>
  56. /// <param name="pieSeries">Series【仅仅适用于PieSeriesView】</param>
  57. /// <param name="explodeMode">突出模式【枚举】</param>
  58. /// <param name="explodedValue">突出间距</param>
  59. /// <param name="dragPie">是否可以拖动突出饼状</param>
  60. public static void SetPieExplode(this ChartControl chart, Series pieSeries, PieExplodeMode explodeMode, int explodedValue, bool dragPie)
  61. {
  62. if (pieSeries.View is PieSeriesView)
  63. {
  64. if (!chart.RuntimeHitTesting)
  65. chart.RuntimeHitTesting = true;
  66. PieSeriesView _pieView = pieSeries.View as PieSeriesView;
  67. _pieView.ExplodeMode = explodeMode;
  68. _pieView.ExplodedDistancePercentage = explodedValue;
  69. _pieView.RuntimeExploding = dragPie;
  70. }
  71. }
  72. /// <summary>
  73. /// Doughnut突出设置
  74. /// </summary>
  75. /// <param name="chart">ChartControl</param>
  76. /// <param name="series">Series【仅仅适用于PieSeriesView】</param>
  77. /// <param name="explodeMode">突出模式【枚举】</param>
  78. /// <param name="explodedValue">突出间距</param>
  79. /// <param name="dragPie">是否可以拖动突出饼状</param>
  80. public static void SetDoughnutExplode(this ChartControl chart, Series series, PieExplodeMode explodeMode, int explodedValue, bool dragPie)
  81. {
  82. if (series.View is DoughnutSeriesView)
  83. {
  84. if (!chart.RuntimeHitTesting)
  85. chart.RuntimeHitTesting = true;
  86. DoughnutSeriesView _View = series.View as DoughnutSeriesView;
  87. _View.ExplodeMode = explodeMode;
  88. _View.ExplodedDistancePercentage = explodedValue;
  89. _View.RuntimeExploding = dragPie;
  90. }
  91. }
  92. public static void ChangeView(ChartControl chartControl, string Serie, string ChartType)
  93. {
  94. Series s = chartControl.GetSeriesByName(Serie);
  95. s.Label.TextPattern = "{V:F2}";
  96. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  97. s.PointOptions.ValueNumericOptions.Precision = 2;
  98. s.Label.PointOptions.ValueNumericOptions.Precision = 2;
  99. s.LegendTextPattern = "{A}: {VP:P3}";
  100. switch (ChartType)
  101. {
  102. case "折线图":
  103. s.ChangeView(ViewType.Line);
  104. // Access the view-type-specific options of the series.
  105. ((LineSeriesView)s.View).LineMarkerOptions.Kind = MarkerKind.Triangle;
  106. ((LineSeriesView)s.View).LineStyle.DashStyle = DashStyle.Dash;
  107. ((LineSeriesView)s.View).ColorEach = true;
  108. SetAxisForXYDiagram(chartControl.Diagram);
  109. break;
  110. case "柱状图":
  111. s.ChangeView(ViewType.Bar);
  112. SetAxisForXYDiagram(chartControl.Diagram);
  113. break;
  114. case "饼图":
  115. s.ChangeView(ViewType.Pie);
  116. //s.LegendPointOptions.PointView = PointView.ArgumentAndValues;
  117. ((PieSeriesLabel)s.Label).ResolveOverlappingMode = ResolveOverlappingMode.Default;//检测标签重合
  118. SetPiePercentage(s);
  119. s.Label.TextPattern = "{A}: {VP:P2}";
  120. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  121. s.ToolTipEnabled = DefaultBoolean.True;
  122. s.ToolTipPointPattern = "{A}: {VP:P3}";
  123. SetPieExplode(chartControl, s, PieExplodeMode.MinValue, 9, true);
  124. break;
  125. case "圆环图":
  126. s.ChangeView(ViewType.Doughnut);
  127. // Specify the text pattern of series labels.
  128. s.Label.TextPattern = "{A}: {VP:P2}";
  129. // Specify how series points are sorted.
  130. s.SeriesPointsSorting = SortingMode.Ascending;
  131. s.SeriesPointsSortingKey = SeriesPointKey.Argument;
  132. // Specify the behavior of series labels.
  133. ((DoughnutSeriesLabel)s.Label).Position = PieSeriesLabelPosition.TwoColumns;
  134. ((DoughnutSeriesLabel)s.Label).ResolveOverlappingMode = ResolveOverlappingMode.Default;
  135. ((DoughnutSeriesLabel)s.Label).ResolveOverlappingMinIndent = 5;
  136. // Access the diagram's options.
  137. ((SimpleDiagram)chartControl.Diagram).Dimension = 2;
  138. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  139. s.ToolTipEnabled = DefaultBoolean.True;
  140. s.ToolTipPointPattern = "{A}: {VP:P3}";
  141. SetDoughnutExplode(chartControl, s, PieExplodeMode.MinValue, 5, true);
  142. break;
  143. case "气泡图":
  144. s.ChangeView(ViewType.Bubble);
  145. ((BubbleSeriesView)s.View).BubbleMarkerOptions.Kind = MarkerKind.Circle;
  146. ((BubbleSeriesView)s.View).ColorEach = true;
  147. s.CrosshairLabelPattern = "{A}";//鼠标悬浮的时候的焦点显示的格式
  148. SetAxisForXYDiagram(chartControl.Diagram);
  149. break;
  150. case "簇状条形图":
  151. s.ChangeView(ViewType.SideBySideStackedBar);
  152. ((SideBySideStackedBarSeriesView)s.View).ColorEach = true;
  153. SetAxisForXYDiagram(chartControl.Diagram);
  154. break;
  155. case "堆积条形图":
  156. s.ChangeView(ViewType.StackedBar);
  157. ((StackedBarSeriesView)s.View).ColorEach = true;
  158. SetAxisForXYDiagram(chartControl.Diagram);
  159. break;
  160. case "瀑布图":
  161. s.ChangeView(ViewType.Waterfall);
  162. ((WaterfallSeriesView)s.View).ColorEach = true;
  163. SetAxisForXYDiagram(chartControl.Diagram);
  164. break;
  165. case "3D柱状图":
  166. s.ChangeView(ViewType.Bar3D);
  167. // Access the series options.
  168. s.PointOptions.PointView = PointView.ArgumentAndValues;
  169. // Customize the view-type-specific properties of the series.
  170. Bar3DSeriesView Bar3DView = (Bar3DSeriesView)s.View;
  171. Bar3DView.BarDepthAuto = false;
  172. Bar3DView.BarDepth = 1;
  173. Bar3DView.BarWidth = 1;
  174. Bar3DView.Transparency = 80;
  175. Bar3DView.ColorEach = true;
  176. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  177. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  178. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  179. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  180. // Access the diagram's options.
  181. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  182. s.Label.TextPattern = "{V:F2}";
  183. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  184. s.LegendTextPattern = "{A}: {V:F3}";
  185. break;
  186. case "3D圆环图":
  187. s.ChangeView(ViewType.Doughnut3D);
  188. // Adjust the view-type-specific options of the series.
  189. ((Doughnut3DSeriesView)s.View).Depth = 11;
  190. ((Doughnut3DSeriesView)s.View).HoleRadiusPercent = 30;
  191. ((Doughnut3DSeriesView)s.View).ExplodedPoints.Add(s.Points[0]);
  192. // Access the diagram's options.
  193. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseAngles;
  194. ((SimpleDiagram3D)chartControl.Diagram).RotationAngleX = -35;
  195. ((SimpleDiagram3D)chartControl.Diagram).RuntimeScrolling = false;
  196. ((SimpleDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  197. ((SimpleDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  198. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  199. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  200. s.Label.TextPattern = "{A}: {VP:P2}";
  201. s.ToolTipEnabled = DefaultBoolean.True;
  202. s.ToolTipPointPattern = "{A}: {VP:P3}";
  203. ((SimpleDiagram3D)chartControl.Diagram).ZoomPercent = 110;
  204. break;
  205. case "3D饼图":
  206. s.ChangeView(ViewType.Pie3D);
  207. // Adjust the value numeric options of the series.
  208. s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
  209. // Adjust the view-type-specific options of the series.
  210. ((Pie3DSeriesView)s.View).Depth = 11;
  211. // Access the diagram's options.
  212. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseAngles;
  213. ((SimpleDiagram3D)chartControl.Diagram).RotationAngleX = -35;
  214. ((SimpleDiagram3D)chartControl.Diagram).ZoomPercent = 110;
  215. ((SimpleDiagram3D)chartControl.Diagram).RuntimeScrolling = false;
  216. ((SimpleDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  217. ((SimpleDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  218. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  219. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  220. s.Label.TextPattern = "{A}: {VP:P2}";
  221. break;
  222. case "3D折线图":
  223. s.ChangeView(ViewType.Line3D);
  224. Line3DSeriesView Line3DView = (Line3DSeriesView)s.View;
  225. Line3DView.LineWidth = 3;
  226. Line3DView.LineThickness = 3;
  227. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  228. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  229. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  230. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  231. // Access the diagram's options.
  232. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  233. ((XYDiagram3D)chartControl.Diagram).VerticalScrollPercent = 0;
  234. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  235. break;
  236. case "3D百分比堆积条形图":
  237. s.ChangeView(ViewType.FullStackedBar3D);
  238. FullStackedBar3DSeriesView FullStackedBar3DView = (FullStackedBar3DSeriesView)s.View;
  239. FullStackedBar3DView.Transparency = 160;
  240. FullStackedBar3DView.Model = Bar3DModel.Cylinder;
  241. FullStackedBar3DView.ShowFacet = false;
  242. FullStackedBar3DView.ColorEach = true;
  243. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  244. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  245. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  246. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  247. // Access the diagram's options.
  248. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  249. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  250. s.LegendTextPattern = "{A}: {V:F3}";
  251. break;
  252. case "3D漏斗图":
  253. s.ChangeView(ViewType.Funnel3D);
  254. // Display a title for the series,
  255. // and adjust another view-type-specific options of the series.
  256. Funnel3DSeriesView funnelView = (Funnel3DSeriesView)s.View;
  257. funnelView.HeightToWidthRatio = 1;
  258. funnelView.HoleRadiusPercent = 70;
  259. funnelView.PointDistance = 5;
  260. // Adjust the value numeric options of the series.
  261. s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
  262. s.PointOptions.ValueNumericOptions.Precision = 2;
  263. // Access the view-type-specific series options.
  264. ((FunnelPointOptions)s.PointOptions).PercentOptions.ValueAsPercent = true;
  265. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  266. s.Label.TextPattern = "{A}: {VP:P2}";
  267. ((FunnelDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  268. ((FunnelDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  269. ((FunnelDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  270. ((FunnelDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  271. // Access the diagram's options.
  272. ((FunnelDiagram3D)chartControl.Diagram).ZoomPercent = 100;
  273. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  274. break;
  275. case "3DManhattan 条形图":
  276. s.ChangeView(ViewType.ManhattanBar);
  277. Bar3DSeriesView ManhattanBarView = (Bar3DSeriesView)s.View;
  278. ManhattanBarView.BarDepthAuto = false;
  279. ManhattanBarView.BarDepth = 1;
  280. ManhattanBarView.Transparency = 80;
  281. ManhattanBarView.ShowFacet = false;
  282. ManhattanBarView.Model = Bar3DModel.Cylinder;
  283. ManhattanBarView.ColorEach = true;
  284. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  285. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  286. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  287. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  288. // Access the diagram's options.
  289. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  290. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  291. s.Label.TextPattern = "{V:F2}";
  292. s.LegendTextPattern = "{A}: {V:F3}";
  293. break;
  294. case "3D堆积条形图":
  295. s.ChangeView(ViewType.StackedBar3D);
  296. StackedBar3DSeriesView StackedBar3DView = (StackedBar3DSeriesView)s.View;
  297. StackedBar3DView.BarDepthAuto = false;
  298. StackedBar3DView.BarDepth = 1.5;
  299. StackedBar3DView.BarWidth = 1;
  300. StackedBar3DView.Transparency = 160;
  301. StackedBar3DView.Model = Bar3DModel.Cylinder;
  302. StackedBar3DView.ColorEach = true;
  303. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  304. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  305. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  306. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  307. // Access the diagram's options.
  308. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  309. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  310. s.Label.TextPattern = "{V:F2}";
  311. s.LegendTextPattern = "{A}: {V:F3}";
  312. break;
  313. case "3D阶梯线图":
  314. s.ChangeView(ViewType.StepLine3D);
  315. StepLine3DSeriesView StepLine3DView = (StepLine3DSeriesView)s.View;
  316. StepLine3DView.LineWidth = 5;
  317. StepLine3DView.LineThickness = 3;
  318. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  319. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  320. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  321. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  322. // Access the diagram's options.
  323. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  324. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  325. s.Label.TextPattern = "{V:F2}";
  326. break;
  327. }
  328. }
  329. public static void ChangeView2(ChartControl chartControl, string ChartType)
  330. {
  331. foreach (Series s in chartControl.Series)
  332. {
  333. s.Label.TextPattern = "{V:F2}";
  334. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  335. s.PointOptions.ValueNumericOptions.Precision = 2;
  336. s.Label.PointOptions.ValueNumericOptions.Precision = 2;
  337. s.LegendTextPattern = "{A}: {VP:P3}";
  338. switch (ChartType)
  339. {
  340. case "折线图":
  341. s.ChangeView(ViewType.Line);
  342. ((LineSeriesView)s.View).LineMarkerOptions.Kind = MarkerKind.Triangle;
  343. ((LineSeriesView)s.View).LineStyle.DashStyle = DashStyle.Dash;
  344. SetAxisForXYDiagram(chartControl.Diagram);
  345. break;
  346. case "柱状图":
  347. s.ChangeView(ViewType.Bar);
  348. SetAxisForXYDiagram(chartControl.Diagram);
  349. break;
  350. case "饼图":
  351. s.ChangeView(ViewType.Pie);
  352. ((PieSeriesLabel)s.Label).ResolveOverlappingMode = ResolveOverlappingMode.Default;//检测标签重合
  353. SetPiePercentage(s);
  354. s.Label.TextPattern = "{A}: {VP:P2}";
  355. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  356. s.ToolTipEnabled = DefaultBoolean.True;
  357. s.ToolTipPointPattern = "{A}: {VP:P3}";
  358. SetPieExplode(chartControl, s, PieExplodeMode.MinValue, 9, true);
  359. break;
  360. case "圆环图":
  361. s.ChangeView(ViewType.Doughnut);
  362. s.Label.TextPattern = "{A}: {VP:P2}";
  363. s.SeriesPointsSorting = SortingMode.Ascending;
  364. s.SeriesPointsSortingKey = SeriesPointKey.Argument;
  365. ((DoughnutSeriesLabel)s.Label).Position = PieSeriesLabelPosition.TwoColumns;
  366. ((DoughnutSeriesLabel)s.Label).ResolveOverlappingMode = ResolveOverlappingMode.Default;
  367. ((DoughnutSeriesLabel)s.Label).ResolveOverlappingMinIndent = 5;
  368. ((SimpleDiagram)chartControl.Diagram).Dimension = 2;
  369. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  370. s.ToolTipEnabled = DefaultBoolean.True;
  371. s.ToolTipPointPattern = "{A}: {VP:P3}";
  372. SetDoughnutExplode(chartControl, s, PieExplodeMode.MinValue, 5, true);
  373. break;
  374. case "气泡图":
  375. s.ChangeView(ViewType.Bubble);
  376. ((BubbleSeriesView)s.View).BubbleMarkerOptions.Kind = MarkerKind.Circle;
  377. s.CrosshairLabelPattern = "{A}";//鼠标悬浮的时候的焦点显示的格式
  378. SetAxisForXYDiagram(chartControl.Diagram);
  379. break;
  380. case "簇状条形图":
  381. s.ChangeView(ViewType.SideBySideStackedBar);
  382. ((SideBySideStackedBarSeriesView)s.View).ColorEach = true;
  383. SetAxisForXYDiagram(chartControl.Diagram);
  384. break;
  385. case "堆积条形图":
  386. s.ChangeView(ViewType.StackedBar);
  387. ((StackedBarSeriesView)s.View).ColorEach = true;
  388. SetAxisForXYDiagram(chartControl.Diagram);
  389. break;
  390. case "瀑布图":
  391. s.ChangeView(ViewType.Waterfall);
  392. ((WaterfallSeriesView)s.View).ColorEach = true;
  393. SetAxisForXYDiagram(chartControl.Diagram);
  394. break;
  395. case "3D柱状图":
  396. s.ChangeView(ViewType.Bar3D);
  397. s.PointOptions.PointView = PointView.ArgumentAndValues;
  398. Bar3DSeriesView Bar3DView = (Bar3DSeriesView)s.View;
  399. Bar3DView.BarDepthAuto = false;
  400. Bar3DView.BarDepth = 1;
  401. Bar3DView.BarWidth = 1;
  402. Bar3DView.Transparency = 80;
  403. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  404. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  405. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  406. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  407. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  408. s.Label.TextPattern = "{V:F2}";
  409. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  410. s.LegendTextPattern = "{A}: {V:F3}";
  411. break;
  412. case "3D圆环图":
  413. s.ChangeView(ViewType.Doughnut3D);
  414. ((Doughnut3DSeriesView)s.View).Depth = 11;
  415. ((Doughnut3DSeriesView)s.View).HoleRadiusPercent = 30;
  416. ((Doughnut3DSeriesView)s.View).ExplodedPoints.Add(s.Points[0]);
  417. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseAngles;
  418. ((SimpleDiagram3D)chartControl.Diagram).RotationAngleX = -35;
  419. ((SimpleDiagram3D)chartControl.Diagram).RuntimeScrolling = false;
  420. ((SimpleDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  421. ((SimpleDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  422. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  423. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  424. s.Label.TextPattern = "{A}: {VP:P2}";
  425. s.ToolTipEnabled = DefaultBoolean.True;
  426. s.ToolTipPointPattern = "{A}: {VP:P3}";
  427. ((SimpleDiagram3D)chartControl.Diagram).ZoomPercent = 110;
  428. break;
  429. case "3D饼图":
  430. s.ChangeView(ViewType.Pie3D);
  431. s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
  432. ((Pie3DSeriesView)s.View).Depth = 11;
  433. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseAngles;
  434. ((SimpleDiagram3D)chartControl.Diagram).RotationAngleX = -35;
  435. ((SimpleDiagram3D)chartControl.Diagram).ZoomPercent = 110;
  436. ((SimpleDiagram3D)chartControl.Diagram).RuntimeScrolling = false;
  437. ((SimpleDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  438. ((SimpleDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  439. ((SimpleDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  440. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  441. s.Label.TextPattern = "{A}: {VP:P2}";
  442. break;
  443. case "3D折线图":
  444. s.ChangeView(ViewType.Line3D);
  445. Line3DSeriesView Line3DView = (Line3DSeriesView)s.View;
  446. Line3DView.LineWidth = 3;
  447. Line3DView.LineThickness = 3;
  448. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  449. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  450. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  451. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  452. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  453. ((XYDiagram3D)chartControl.Diagram).VerticalScrollPercent = 0;
  454. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  455. break;
  456. case "3D百分比堆积条形图":
  457. s.ChangeView(ViewType.FullStackedBar3D);
  458. FullStackedBar3DSeriesView FullStackedBar3DView = (FullStackedBar3DSeriesView)s.View;
  459. FullStackedBar3DView.Transparency = 160;
  460. FullStackedBar3DView.Model = Bar3DModel.Cylinder;
  461. FullStackedBar3DView.ShowFacet = false;
  462. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  463. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  464. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  465. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  466. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  467. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  468. s.LegendTextPattern = "{A}: {V:F3}";
  469. break;
  470. case "3D漏斗图":
  471. s.ChangeView(ViewType.Funnel3D);
  472. Funnel3DSeriesView funnelView = (Funnel3DSeriesView)s.View;
  473. funnelView.HeightToWidthRatio = 1;
  474. funnelView.HoleRadiusPercent = 70;
  475. funnelView.PointDistance = 5;
  476. s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
  477. s.PointOptions.ValueNumericOptions.Precision = 2;
  478. ((FunnelPointOptions)s.PointOptions).PercentOptions.ValueAsPercent = true;
  479. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  480. s.Label.TextPattern = "{A}: {VP:P2}";
  481. ((FunnelDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  482. ((FunnelDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  483. ((FunnelDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  484. ((FunnelDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  485. ((FunnelDiagram3D)chartControl.Diagram).ZoomPercent = 100;
  486. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  487. break;
  488. case "3DManhattan 条形图":
  489. s.ChangeView(ViewType.ManhattanBar);
  490. Bar3DSeriesView ManhattanBarView = (Bar3DSeriesView)s.View;
  491. ManhattanBarView.BarDepthAuto = false;
  492. ManhattanBarView.BarDepth = 1;
  493. ManhattanBarView.Transparency = 80;
  494. ManhattanBarView.ShowFacet = false;
  495. ManhattanBarView.Model = Bar3DModel.Cylinder;
  496. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  497. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  498. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  499. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  500. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  501. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  502. s.Label.TextPattern = "{V:F2}";
  503. s.LegendTextPattern = "{A}: {V:F3}";
  504. break;
  505. case "3D堆积条形图":
  506. s.ChangeView(ViewType.StackedBar3D);
  507. StackedBar3DSeriesView StackedBar3DView = (StackedBar3DSeriesView)s.View;
  508. StackedBar3DView.BarDepthAuto = false;
  509. StackedBar3DView.BarDepth = 1.5;
  510. StackedBar3DView.BarWidth = 1;
  511. StackedBar3DView.Transparency = 160;
  512. StackedBar3DView.Model = Bar3DModel.Cylinder;
  513. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  514. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  515. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  516. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  517. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  518. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
  519. s.Label.TextPattern = "{V:F2}";
  520. s.LegendTextPattern = "{A}: {V:F3}";
  521. break;
  522. case "3D阶梯线图":
  523. s.ChangeView(ViewType.StepLine3D);
  524. StepLine3DSeriesView StepLine3DView = (StepLine3DSeriesView)s.View;
  525. StepLine3DView.LineWidth = 5;
  526. StepLine3DView.LineThickness = 3;
  527. ((XYDiagram3D)chartControl.Diagram).RuntimeScrolling = true;
  528. ((XYDiagram3D)chartControl.Diagram).RuntimeZooming = true;
  529. ((XYDiagram3D)chartControl.Diagram).RuntimeRotation = true;
  530. ((XYDiagram3D)chartControl.Diagram).RotationType = RotationType.UseMouseAdvanced;
  531. ((XYDiagram3D)chartControl.Diagram).ZoomPercent = 125;
  532. chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  533. s.Label.TextPattern = "{V:F2}";
  534. break;
  535. }
  536. }
  537. }
  538. #region 通用
  539. /// <summary>
  540. /// [颜色:16进制转成RGB]
  541. /// </summary>
  542. /// <param name="strColor">设置16进制颜色 [返回RGB]</param>
  543. /// <returns></returns>
  544. public static System.Drawing.Color colorHx16toRGB(string strHxColor)
  545. {
  546. try
  547. {
  548. if (strHxColor.Length == 0)
  549. {//如果为空
  550. return System.Drawing.Color.FromArgb(255, 255, 204);//设为白色
  551. }
  552. else
  553. {//转换颜色
  554. return System.Drawing.Color.FromArgb(System.Int32.Parse(strHxColor.Substring(1, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(3, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(5, 2), System.Globalization.NumberStyles.AllowHexSpecifier));
  555. }
  556. }
  557. catch
  558. {//设为白色
  559. return System.Drawing.Color.FromArgb(255, 255, 204);
  560. }
  561. }
  562. #endregion
  563. }
  564. }