Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForms图表控件-显示刻度之间的标签_C#_Winforms_Charts - Fatal编程技术网

C# WinForms图表控件-显示刻度之间的标签

C# WinForms图表控件-显示刻度之间的标签,c#,winforms,charts,C#,Winforms,Charts,默认情况下,标签显示在刻度下方的中心位置 有没有办法改变这一点,使标签显示在刻度之间,如下图所示: 常规标签将始终显示数据点。但您可以显示之间的刻度线 根据数据类型和间隔,您可以设置主标记。间隔偏移量: 注意:要使其正常工作,您需要设置间隔。默认情况下,它设置为0.0,因此您需要将其设置为其他值!大多数tome的值为1就可以了 更难的替代方法是使用CustomLabels。。为了同样的结果,需要做更多的工作。不太推荐。您可以看到一个示例我认为唯一的方法是使用自定义标签。这意味着从控件中接管添

默认情况下,标签显示在刻度下方的中心位置

有没有办法改变这一点,使标签显示在刻度之间,如下图所示:


常规标签将始终显示数据点。但您可以显示之间的刻度线

根据数据类型和
间隔
,您可以设置
主标记。间隔偏移量

注意:要使其正常工作,您需要设置
间隔。默认情况下,它设置为
0.0
,因此您需要将其设置为其他值!大多数tome的值为
1
就可以了


更难的替代方法是使用
CustomLabels
。。为了同样的结果,需要做更多的工作。不太推荐。您可以看到一个示例

我认为唯一的方法是使用自定义标签。这意味着从控件中接管添加标签的工作并自己手动完成,这可能适合您的情况,也可能不适合您的情况

下面将对此进行更详细的描述:

使用自定义标签为轴提供自定义文本。自定义标签是 使用CustomLabels集合属性实现。如果你使用 自定义标签,图表区域不显示数据中的轴标签 要点

使用CustomLabel对象时,必须设置地形位置和 每个CustomLabel对象的FromPosition属性,以及 属性必须指定标签文本区域的宽度。不要 为这两个属性指定相同的值,因为它们 表示一个范围。将自定义标签直接放置在数据源下方的步骤 点及其关联的记号,将FromPosition特性设置为 该数据点轴的值减去刻度线的一半 间隔,并将ToPosition特性设置为该数据的值 点的轴加上记号间隔的一半。例如,如果 axis的间隔为1(1,2,3,…),您希望使用自定义 在X=2处添加标签,然后将ToPosition和FromPosition属性设置为 分别为1.5和2.5

RowIndex属性指定自定义标签所在的行 显示。如果在第一个标签行中使用自定义标签,则图表 区域不显示轴比例中的任何标签。唯一的标签 第二行及其后允许使用自定义标签

在您的情况下,您不希望标签直接位于刻度线下方,因此在上面引用的文本中的示例中,您将位置TopoPosition设置为2,将FromPosition设置为3


查看您的特定图形,如果x轴值是DateTimes,则需要检查to/From位置是否适用于DateTimes。如果没有,在将值用于x轴之前,可能需要将其转换为序列号(例如,您可以使用此功能)。这不会影响显示的内容,因为您将用自己的标签替换这些标签,然后您可以按照自己的意愿格式化这些标签。

我认为他想重新定位标签,而不是记号。也许,但正如我所写的,这是不可能的。他将不得不使用
CustomLabels
。在上面的示例中,您将position-ToPosition设置为2,将FromPosition设置为3。显示的图表至少看起来数据类型是datetime。如果是你的代码不起作用的话。@TaW对不起,也许这是一种混淆,我的代码指的是你如何在引用的文本中修改示例,而不是OP的原始图像。我已经更新了我的回复,使之更清晰,并添加了x轴值为日期时所需的大纲。这至少有点接近。但是,实际值始终是双精度的,或者已经包含转换后的ToOADate数字,或者包含0(如果这些值是作为字符串添加的)。因此,可以使用这些数字来确定to和FromValue,但这将非常繁琐。我仍然喜欢我的解决方案;但现在我可以收回我的否决票了:-)
chart1.ChartAreas[0].AxisX.MajorTickMark.IntervalOffset =
                     chart1.ChartAreas[0].AxisX.Interval / 2f;