我使用固定的LabelsSize
和TitleSize
来保持我的TChart LeftAxis在相同的位置,但轴标题(垂直90°)根据其长度移动。很明显,标题的X位置是从0°(水平)字符串长度的中心计算的,而不是在90°文本的顶部或底部的固定位置,这与长度无关。
有办法解决这个问题吗?
用空格填充不起作用,可能是因为这些空格在绘制标题之前被删除了。
谢谢
这个bug的解决方案/解决方法(不放弃捆绑版本,而支持评估版本)是设置标题的AutoSize
属性为false,然后手动设置标题的Width
和Height
为要显示的文本的高度。
我使用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
-有用,如果你改变默认字体