c# - 如何在 C# Windows 窗体的 MS 图表中添加次要刻度线?
问题描述
如何在 Windows 窗体的 MS 图表中添加次要刻度线。
我正在使用下面的代码,但没有显示小刻度线。
chart.ChartAreas[0].AxisX.MinorTickMark.Enabled = true;
chart.ChartAreas[0].AxisX.MajorGrid.Interval = 1;
chart.ChartAreas[0].AxisX.MajorGrid.IntervalType = DateTimeIntervalType.Seconds;
chart.ChartAreas[0].AxisX.MinorTickMark.IntervalType = DateTimeIntervalType.Number;
chart.ChartAreas[0].AxisX.MinorTickMark.Interval = 2;
请帮我。
解决方案
MinorTickMarks
你这样打开的方式很好。
但是如果你想使用不同IntervalTypes
的,你需要了解类型背后的数值。
在内部,所有值,x 和 y 值都定义并存储为doubles
.
如果您将其中一些声明为,它们会被转换函数DateTimes
转换为double
(并在必要时返回):( 和)。DateTime
double.ToOADate
FromOADate
让我们看看一秒钟的结果:
DateTime dt0 = DateTime.Now;
DateTime dt1 = dt0 .AddSeconds(1);
double d0 = dt0.ToOADate();
double d1 = dt1.ToOADate();
double dd = d1 - d0;
Console.WriteLine(d0 + " .. " + d1 + " => " + dd);
输出:
43612,4597045023 .. 43612,4597160764 => 1,15740695036948E-05
因此,就像在您的代码中那样,具有如此小的值 an Interval
of1
不会在图表中发生。最好使用不同的类型,比如DateTimeIntervalType.Milliseconds
用一个合适的Interval
,比如500
..!
推荐阅读
- java - Hibernate 扩展实体以使用附加连接进行读取
- sql - 查询执行时间过长
- java - 为什么 hashCode() 函数会产生错误
- java - 将 awssdk s3 v2 与 GCS 和 Minio 网关一起使用时出现 Etag 解码错误
- oracle - 为什么我得到一个 ORA-24247 代码在函数中但不在匿名块中?
- react-native - 如何使用 redux saga 实现 redux 持久化?
- python-3.x - 使用 Machin 方法估计 pi 的准确性问题
- javascript - 如何使已转换为 JSON 的 Excel 文件自动加载到表(DataTables)
- django - 在 Django Forms 中,如何向 SelectedMultiple 控件添加过滤器?
- java - 为什么 spring boot 要求我定义一个 'entityManagerFactory' bean?