为什么TChart左轴标题位置取决于标题长度?

时间:2015-08-21 13:58:33

标签: c++builder teechart

我使用固定btnCallback returns... clicked op() op done timeout expired second timeout expired Coroutine has ended LabelsSize将我的TChart LeftAxis保持在同一位置,但轴标题(垂直90°)根据其长度移动。很明显,标题的X位置是从0°(水平)弦长的中心而不是90°文本的顶部或底部的固定位置计算的,这与长度无关。

有解决方法吗?

使用空格填充不起作用,可能是因为在绘制标题之前将它们剥离。

由于

1 个答案:

答案 0 :(得分:1)

此错误的解决方案/解决方法(不抛弃捆绑版本以支持评估版本)是将标题的AutoSize属性设置为false,然后设置Width和{手动标题的{1}}到要显示的文本的高度。

我正在使用Delphi XE5,我的代码如下所示:

Height

可以在C ++中完成模拟,特别是因为Delphi和C ++ builder之间的大多数VCL是相同的。

编辑1:添加了lBitMap := TBitMap.Create; try lBitMap.Canvas.Font := Chart1.LeftAxis.Title.Font; Chart1.LeftAxis.Title.Width := lBitMap.Canvas.TextHeight(Chart1.LeftAxis.Title.Caption)+5; Chart1.LeftAxis.Title.Height := lBitMap.Canvas.TextHeight(Chart1.LeftAxis.Title.Caption)+5; Chart1.LeftAxis.Title.AutoSize := false; Chart1.LeftAxis.Title.TextAlignment := taCenter; finally lBitMap.Free; end; ,应设置为TextAlignment,以便标题以轴为中心
编辑2:使用标题的字体获取taCenter - 如果更改默认字体

,则非常有用