我正在尝试使用堆叠系列创建条形图。每个栏都由两部分组成。主要部分有正常的颜色和黑色边框,“超限”部分有更亮的颜色和红色边框。在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,它不起作用。调用刷新,重新绘制或其他什么都无济于事。尝试在AfterDraw事件上更改颜色也不起作用。
每个系列只有一个值。我有TeeChart Standard v2012.06.120613 32bit。
答案 0 :(得分:1)
问题在于CalcBarBounds功能。它仅返回正确的值 图表已经显示。它第一次返回0.这 结果将边框颜色应用于每个超过限制&#34;不管吧 它是第一次出现时的高度。当我按下重新加载 按钮清除所有系列并调用与以前相同的代码, 一切都很好。如果我从代码中调用reload,它就无法工作。
在调用CalcBarBounds
之前,您可能必须强制重新绘制图表。
在图表完成第一次绘制之前,某些内部值尚未初始化或没有有效值。
调用刷新,重新绘制或其他任何无法帮助
您是否尝试过调用Draw
函数?