# C# Chart 折线图设置区域背景色

在某些情况下需要将大于某数据阈值的部分设为不同的背景色,如将Y轴分为三个不同背景色的区间,而chart自带的控件似乎并不存在该设置,需要使用其他辅助设置,此处采用绘制线条的方法,设置一定的线条宽度,达到不同背景色的视觉效果,代码如下:

		/// <summary>
        /// 在Y轴上画一条平行于X轴的线
        /// </summary>
        /// <param name="linePosition">线的位置</param>
        /// <param name="chart">所在的图表</param>
        /// <param name="color">颜色</param>
        /// <param name="lineWidth">线的宽度</param>
        public void drawLineWithAxisY(double linePosition, Chart chart, Color color, double lineWidth)
        {
            StripLine stripLine = new StripLine(); 
            //  striplineSP.Text = string.Format(linePosition.ToString()); // 展示文本
            //  striplineSP.TextAlignment = StringAlignment.Far;// 文本对齐方式
            stripLine.Interval = 0; // 设置多长间隔继续绘制,如为0则只绘制一条
            stripLine.IntervalOffset = linePosition; // 线的起始位置
            stripLine.StripWidth = lineWidth; // 线的宽度
            stripLine.BackColor = color;  // 线的颜色
            stripLine.BorderDashStyle = ChartDashStyle.DashDot; // 线的形状
            chart.ChartAreas[0].AxisY.StripLines.Add(stripLine);
        }

函数也可用于绘制分割线,如在Y轴某刻度绘制一条平行于X轴的分割线,函数中注释的两行可对绘制的线条加以文字说明。对于绘制平行于Y轴的分割线代码如下:

		/// <summary>
        /// 在X轴上画一条平行于Y轴的线
        /// </summary>
        /// <param name="linePosition">线的位置</param>
        /// <param name="chart">所在的图表</param>
        /// <param name="color">颜色</param>
        /// <param name="lineWidth">线宽</param>
        private void drawLineWithAxisX(double linePosition, Chart chart, Color color, double lineWidth)
        {
            StripLine stripLine = new StripLine();
            stripLine.Interval = 0;
            stripLine.IntervalOffset = linePosition;
            stripLine.StripWidth = lineWidth;
            stripLine.BackColor = color;
            stripLine.BorderDashStyle = ChartDashStyle.DashDot;
            chart.ChartAreas[0].AxisX.StripLines.Add(stripLine);
        }

若需要填充整个图表,代码如下:

chart1.ChartAreas[0].BackColor = Color.Red;  // 设置背景为红色

函数使用及其结果:

drawLineWithAxisY(8, chart1, Color.Red, 2); // 从刻度8开始,宽度为2,即8~10区间内背景为红色
drawLineWithAxisY(6, chart1, Color.Yellow, 2); // 从刻度6开始,宽度为2,即6~8区间内背景为黄色
drawLineWithAxisX(2, chart1, Color.Red, 0.01); // 在X轴上刻度2位置绘制宽度为0.01的红色分割线

效果图如下:
在这里插入图片描述
若有不对的地方或有更好的方法欢迎大佬指教!!!

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值