Ple*_*pMe 7 .net c# mschart winforms
我的winforms应用程序中有一个Microsoft Chart Controls.
我目前在循环中播放X和y值.我也将X轴格式设置为
ChartAreas[0].AxisX.LabelStyle.Format={"00:00:00"}
Run Code Online (Sandbox Code Playgroud)
这作为时间格式工作正常,但是我注意到一旦我的时间值超过60秒(即00:00:60),而不是比例移动到1分钟(即00:01:00)它变为61 (即00:00:61)一直到99分(00:00:99)然后(00:01:00)
有没有办法解决这个问题?
dig*_*All 11
我怀疑该LabelStyle.Format
财产的使用方式与此类似string.Format(mySringFormat,objToFormat)
.
因此,假设您的基础X对象类型是double
,它将只打印冒号分隔的双精度(例如4321
将是00:43:21
).
AFAIK,没有一种简单的方法可以double
使用字符串格式打印像时间值这样的值.
如果您可以更改填充图表的代码,我建议您传递DateTime
's为X值,然后您将能够使用自定义DateTime
格式,例如
"HH:mm:ss"
或其他人
编辑:
根据你的评论:
// create a base date at the beginning of the method that fills the chart.
// Today is just an example, you can use whatever you want
// as the date part is hidden using the format = "HH:mm:ss"
DateTime baseDate = DateTime.Today;
var x = baseDate.AddSeconds((double)value1);
var y = (double)value2;
series.Points.addXY(x, y);
Run Code Online (Sandbox Code Playgroud)
编辑2:
这是一个完整的示例,应该很容易将此逻辑应用于您的代码:
private void PopulateChart()
{
int elements = 100;
// creates 100 random X points
Random r = new Random();
List<double> xValues = new List<double>();
double currentX = 0;
for (int i = 0; i < elements; i++)
{
xValues.Add(currentX);
currentX = currentX + r.Next(1, 100);
}
// creates 100 random Y values
List<double> yValues = new List<double>();
for (int i = 0; i < elements; i++)
{
yValues.Add(r.Next(0, 20));
}
// remove all previous series
chart1.Series.Clear();
var series = chart1.Series.Add("MySeries");
series.ChartType = SeriesChartType.Line;
series.XValueType = ChartValueType.Auto;
DateTime baseDate = DateTime.Today;
for (int i = 0; i < xValues.Count; i++)
{
var xDate = baseDate.AddSeconds(xValues[i]);
var yValue = yValues[i];
series.Points.AddXY(xDate, yValue);
}
// show an X label every 3 Minute
chart1.ChartAreas[0].AxisX.Interval = 3.0;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Minutes;
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
}
Run Code Online (Sandbox Code Playgroud)