C# MS图表带线日内
我使用的折线图Y轴为双精度,X轴为日期时间。我的绘图只有日内数据:我在上午8点到晚上10点之间每分钟有一个点 我想在情节的某些阶段画线。第一节课从8:50开始,持续20分钟。为此,我使用带以下代码的带状线: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
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]);
}