c# chart control
internal class ChartStyle { internal static void RemoveZeroDataPointLabel(Chart chart) { foreach (Series series in chart.Series) { foreach (DataPoint dp in series.Points) { if (dp.YValues[0].ToString() == "0") { dp.IsValueShownAsLabel = false; dp.Label = " "; } } } } internal static void DrawString(object sender, PaintEventArgs e, string text) { Font font = new Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); PictureBox pb = sender as PictureBox; float sumY = 0; foreach (char c in text) { string line = new string(c, 1); SizeF size = e.Graphics.MeasureString(line, font); sumY += size.Height; } float y = (pb.Height - sumY) / 2; y = 10; foreach (char c in text) { string line = new string(c, 1); SizeF size = e.Graphics.MeasureString(line, font); sumY += size.Height; e.Graphics.DrawString(line, font, Brushes.White, (pb.Width - size.Width) / 2, y); y += size.Height; } } internal static void chartPickRatio_PostPaint(object sender, ChartPaintEventArgs e) { e.ChartGraphics.Graphics.SmoothingMode = SmoothingMode.AntiAlias; Chart chart = sender as Chart; if (chart.Series.Count > 0 && chart.Series[0].Points.Count > 0) { Series series = chart.Series[0]; double value = series.Points[0].XValue; if (series.Label == "0") { value = 0; } string msg = value.ToString("P0"); Font font = new Font("Arial", 25); SizeF size = e.ChartGraphics.Graphics.MeasureString(msg, font); e.ChartGraphics.Graphics.DrawString(msg, font, Brushes.Red, chart.Width / 2 - size.Width / 2, chart.Height / 2 - size.Height / 2); } } /// <summary> /// Set Chart ScrollBarStyle /// </summary> /// <param name="chart"></param> internal static void SetChartScrollBarStyle(Chart chart) { chart.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines; //chart.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Triangle; chart.ChartAreas[0].AxisX.ScrollBar.BackColor = Color.Transparent; chart.ChartAreas[0].AxisX.ScrollBar.LineColor = chart.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.FromArgb(214, 214, 204); chart.ChartAreas[0].AxisY.TitleForeColor = Color.White; chart.ChartAreas[0].AxisY.TitleFont = new Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); chart.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Stacked; chart.ChartAreas[0].AxisY2.TitleForeColor = Color.White; chart.ChartAreas[0].AxisY2.TitleFont = new Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); if (chart.Tag != "NO") { chart.ChartAreas[0].InnerPlotPosition.Auto = false; chart.ChartAreas[0].InnerPlotPosition.Height = 84.41489F; chart.ChartAreas[0].InnerPlotPosition.Width = 85.34175F; chart.ChartAreas[0].InnerPlotPosition.X = 9.65825F; chart.ChartAreas[0].InnerPlotPosition.Y = 2.79255F; //3, 0, 94.8, 97 chart.ChartAreas[0].InnerPlotPosition.Height = 90; chart.ChartAreas[0].InnerPlotPosition.Width = 90; chart.ChartAreas[0].InnerPlotPosition.X = 5; chart.ChartAreas[0].InnerPlotPosition.Y = 5; //chart.ChartAreas[0].InnerPlotPosition.Height = 50; //chart.ChartAreas[0].InnerPlotPosition.Width = 50; //chart.ChartAreas[0].InnerPlotPosition.X = 15; //chart.ChartAreas[0].InnerPlotPosition.Y = 15; } //chart.ChartAreas[0].InnerPlotPosition.Height = 94.8f; //chart.ChartAreas[0].InnerPlotPosition.Height = 90.8f; //chart.ChartAreas[0].InnerPlotPosition.Width = 97; //chart.ChartAreas[0].InnerPlotPosition.X = 3; //chart.ChartAreas[0].InnerPlotPosition.Y = 0; chart.ChartAreas[0].AxisY.MajorTickMark.TickMarkStyle = TickMarkStyle.None; chart.ChartAreas[0].AxisY2.MajorTickMark.TickMarkStyle = TickMarkStyle.None; chart.ChartAreas[0].AxisX.LabelStyle.Enabled = true; if (chart.Tag != "NO" && chart.ChartAreas[0].AxisX.ScrollBar.Enabled) { if (chart.Height > 20) { float ratio = 20.0f/(float) chart.Height; chart.ChartAreas[0].InnerPlotPosition.Height -= (ratio*100); } } chart.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll; chart.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.White; } internal static void SetChartScrollBarStyleInForm(Form control) { List<Control> controlList = new List<Control>(); GetChildren(controlList, control); foreach (Control control1 in controlList) { if (control1 is Chart) { SetChartScrollBarStyle((Chart)control1); } } } public static void GetChildren(List<Control> controlList, Control control) { controlList.Add(control); foreach (Control control1 in control.Controls) { GetChildren(controlList, control1); } } }