我正在尝试创建堆叠系列的条形图。每个棒子由两部分组成。主要部分为正常颜色和黑色边框,"超限"部分为明亮颜色和红色边框。在IDE (Delphi XE3)中配置此行为没有问题。当我设置过小的"超过限制"条时,配置的行为开始变得糟糕。如果这个条是1px高,红色边框消失,只渲染1px的画笔颜色线。我需要渲染边框颜色线。我想改变这个栏的颜色
下面是我的部分代码:
Series1.AddY((RamTotal-RamAvailable-memover) / mb, titlemem);
if memover > 0 then
Series2.AddY(memover / mb, titlememover);
if (memover > 0) and (Series2.CalcBarBounds(0).Height <= 2) then
Series2.ValueColor[0] := FSmallOverColor;
问题是与CalcBarBounds函数。只有在图表已经显示之后,它才返回正确的值。第一次返回0。这导致在第一次显示时将边框颜色应用于每个"超过限制"栏,而不管它的高度。当我按下reload按钮清除所有系列并调用与之前相同的代码时,一切看起来都很好。如果我从代码中调用reload,它就不起作用了。调用refresh, repaint或其他方法都不起作用。尝试更改AfterDraw事件的颜色也不工作。
每个序列只有一个值。我有TeeChart标准v2012.06.120613 32位。
问题是与CalcBarBounds函数。它只返回正确的值后表已经显示。第一次返回0。这结果将边框颜色应用到每个"超过限制"栏,无论如何这是第一次展示时的高度。当我点击重新加载按钮,清除所有系列并调用与之前相同的代码,一切看起来都很好。如果我从代码中调用reload,它就不起作用了。
在调用CalcBarBounds
之前,您可能必须强制重新绘制图表。在图表完成第一次绘制之前,一些内部值没有初始化或没有有效值。
调用refresh, repaint或者其他没有帮助的方法
你试过调用Draw
函数吗?