C# MS图表带线日内

C# MS图表带线日内,c#,charts,mschart,C#,Charts,Mschart,我使用的折线图Y轴为双精度,X轴为日期时间。我的绘图只有日内数据:我在上午8点到晚上10点之间每分钟有一个点 我想在情节的某些阶段画线。第一节课从8:50开始,持续20分钟。为此,我使用带以下代码的带状线: var stripLine = new StripLine(); stripLine.BackColor = Color.White; stripLine.BackGradientStyle = GradientStyle.TopBottom; stripLine.BackImageTran

我使用的折线图Y轴为双精度,X轴为日期时间。我的绘图只有日内数据:我在上午8点到晚上10点之间每分钟有一个点

我想在情节的某些阶段画线。第一节课从8:50开始,持续20分钟。为此,我使用带以下代码的带状线:

var stripLine = new StripLine();
stripLine.BackColor = Color.White;
stripLine.BackGradientStyle = GradientStyle.TopBottom;
stripLine.BackImageTransparentColor = Color.White;
stripLine.BackSecondaryColor = Color.Transparent;
stripLine.Interval = 1;
stripLine.IntervalType = DateTimeIntervalType.Days;
stripLine.IntervalOffset = 50;
stripLine.IntervalOffsetType = DateTimeIntervalType.Minutes;
stripLine.StripWidth = 20;
stripLine.StripWidthType= DateTimeIntervalType.Minutes;
chartArea.AxisX.StripLines.Add(stripLine);
然而,我没有得到正确的结果。事实上,我所有的图表区域都用带状线划线

以下是我想要实现的目标:
您的问题有点模糊:您的代码从上午8:50到9:10在该区域垂直条带化

是否要每隔x:50到x+1:10创建一条带状线

for(int i=0;i<24;i++)
{
    var stripLine = new StripLine();
    stripLine.BackColor = Color.White;
    stripLine.BackGradientStyle = GradientStyle.TopBottom;
    stripLine.BackImageTransparentColor = Color.White;
    stripLine.BackSecondaryColor = Color.Transparent;
    stripLine.Interval = (double)i;
    stripLine.IntervalType = DateTimeIntervalType.Hours;
    stripLine.IntervalOffset = 50;
    stripLine.IntervalOffsetType = DateTimeIntervalType.Minutes;
    stripLine.StripWidth = 20;
    stripLine.StripWidthType = DateTimeIntervalType.Minutes;
    Chart1.ChartAreas[0].AxisX.StripLines.Add(stripLine);
}
是正确的解决方案。

带状线是一条线,它只允许添加彩色矩形

要创建沿着样条曲线的区域,需要

在后期事件中绘制它 或者使用额外系列的SplineArea型 这是第二条路:


请大家注意,看了9遍,没有回答:坐着不清楚你想达到什么目的。我用一张图片来说明我的目的。不完全是,我想填满两个点之间的所有图表区域,而不仅仅是线下。我一直认为使用样条线区域,并将两个点之间的绘图的最大值设置为Y值,当直线超出周期时,设置为最小值。但我更喜欢带状线的解决方案,因为它们消耗量低。此外,我总是使用样条线区域,如图所示。如果你愿意的话,我想用一条垂直的带状线来填充我的特定周期,它的条纹宽度等于两点之间的周期。
var stripLine = new StripLine();
stripLine.BackColor = Color.White;
stripLine.BackGradientStyle = GradientStyle.TopBottom;
stripLine.BackImageTransparentColor = Color.White;
stripLine.BackSecondaryColor = Color.Transparent;
stripLine.Interval = 9;
stripLine.IntervalType = DateTimeIntervalType.Hours;
stripLine.IntervalOffset = 28;
stripLine.IntervalOffsetType = DateTimeIntervalType.Minutes;
stripLine.StripWidth = 8;
stripLine.StripWidthType= DateTimeIntervalType.Seconds;
chartArea.AxisX.StripLines.Add(stripLine);
..
Series s3 = chart.Series.Add("S3 ");
s1.ChartType = SeriesChartType.Spline;
s2.ChartType = SeriesChartType.Line;
s3.ChartType = SeriesChartType.SplineArea;

s2.Color = Color.Red;
s3.Color = Color.FromArgb(55, Color.RosyBrown);

for (int i = 0; i < 50; i++)
{
    s1.Points.AddXY(i,20 - rnd.Next(10) );
    s2.Points.AddXY(i,17);
    if (i > 10 && i < 20) s3.Points.AddXY(i, s1.Points[i].YValues[0]);
}