【问题标题】:.net charts - how to force data labels to display above a curve always?.net 图表 - 如何强制数据标签始终显示在曲线上方?
【发布时间】:2014-01-27 18:44:18
【问题描述】:

在下面示例的蓝色曲线上,第一个数据点 (74.2%) 显示在曲线下方,而其他 3 个数据点显示在曲线上方(85.9%、94.6%、104.7%)。

我最初认为当该点距离图表区域顶部太近时,标签会显示在该点下方。实际上,标签是否打印在某个点的上方或下方似乎是相当随意的(您会注意到第一个点也是 Y 轴上的“最低点”......)。

有没有办法强制标签总是在它们各自的点上方打印?

【问题讨论】:

    标签: c# .net charts


    【解决方案1】:

    您没有发布任何重现代码,很难从屏幕截图中对代码进行逆向工程。当您遇到此类非常具体的问题时,切勿跳过此内容。

    猜猜看,您正在与“智能标签”功能作斗争。这在某种程度上不可避免地意味着它会有自己的想法,迟早不会做你希望它做的事情。您可以通过Series.SmartLabelStyle 属性一些 控制它的使用方式。首先肯定要尝试的是将其Enabled property 设置为false,这样它就不再聪明了。下一个你可以修改的是它的AllowOutsidePlotArea property

    如果这些都不能让您有所收获,那么请考虑利用 Chart.PostPaint 事件并自己绘制这些标签。当然,您可以完全控制它们的放置位置。

    【讨论】:

      【解决方案2】:

      我不会禁用 SmartLabelStyle,而是调整它的参数。你应该看看MovingDirection Property。这可以控制允许标签移动的方向。 因此,您可能希望将其值设置为“Top”,以使其看起来更多,即使您应该将 Min 和 Max 移动距离指定为相同的数量。

      【讨论】:

      • 谢谢,但我相信 MovingDirection 属性适用于在系列之间相互重叠的标签,而不是用于重叠系列图形的标签。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2017-03-16
      • 2017-08-21
      相关资源
      最近更新 更多