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



我使用固定的LabelsSizeTitleSize来保持我的TChart LeftAxis在相同的位置,但轴标题(垂直90°)根据其长度移动。很明显,标题的X位置是从0°(水平)字符串长度的中心计算的,而不是在90°文本的顶部或底部的固定位置,这与长度无关。

有办法解决这个问题吗?

用空格填充不起作用,可能是因为这些空格在绘制标题之前被删除了。

谢谢

这个bug的解决方案/解决方法(不放弃捆绑版本,而支持评估版本)是设置标题的AutoSize属性为false,然后手动设置标题的WidthHeight为要显示的文本的高度。

我使用Delphi XE5,我的代码看起来像这样:

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;

类似的事情可能可以在c++中完成,特别是因为大多数VCL在Delphi和c++ builder之间是相同的。

编辑1:添加TextAlignment,设置为taCenter,使标题居中
编辑2:使用字体的标题得到TextHeight -有用,如果你改变默认字体

相关内容

  • 没有找到相关文章

最新更新