我正在用一些数据列在 VisualStudio WinForms 中制作一个图表,我想为其中一些列放置标签。主要问题是没有显示第一列和最后一列的标签。图表的最小值和最大值是固定的,数据点可以是最小值和最大值。
例如,我制作了一个带有series[0].ChartType = "Column"的图表,并通过设置series[0].Label属性来显示 X、Y、index 和一些文本字符串来分配标签,还设置了series[0].LabelBackColor和series[0].LabelBorderColor制作一个盒子。
这就是我得到的:
文本在背景框之外,标签与边框重叠,但 AxisY(左侧)仍然可见;x=0 和 x=10 的标签根本没有显示!同样对于 Column 类型,下面编写的所有操作均无效。
实际上我需要 StackedColumn 类型,所以:然后我将类型更改为series[0].ChartType = "StackedColumn"并得到了这个:
盒子更大,但仍然与 AxisY 线和顶部的数字重叠,并且仍然没有第一个和最后一个标签。
我试图设置series[0].SmartLabelStyle.IsOverlappingHidden = false并得到这个:
AxisX 和 AxisY 线和标记显示在标签上方。那不好。
然后我尝试通过设置完全禁用SmartLabelStyle:series[0].SmartLabelStyle.Enabled = false并得到这个:
好不了多少。现在连标签都重叠了。
最后,我尝试通过启用SmartLabelStyle并设置series[0].SmartLabelStyle.MovingDirection = "Right | Left"来强制标签移动并得到以下信息:
现在标签中的文本已正确移动,但背景框未正确移动。如果那个盒子也能正确移动就足够了,但事实并非如此。我不知道如何使数据点标签正确显示在图表的左侧和右侧。
有没有办法为它的文本和框设置标签位置?如何将标签框设置为适合文本的大小?
我绝对想避免使用 chart.Paint 方法。