【发布时间】:2017-06-27 10:12:02
【问题描述】:
我正在 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 方法。
【问题讨论】: