Canvas.TextWidth不会返回正确的值

时间:2014-10-13 21:39:52

标签: delphi firemonkey

我正在使用delphi中的TImage组件的画布写入。 我正在使用Canvas.TextWidth,但是当我更改字符串的字体大小时,此函数Canvas.textWidth返回相同的值。

我正在研究Delphi xe6

1 个答案:

答案 0 :(得分:5)

我怀疑您在代码中的某个位置使用了错误的 Canvas ,因为 TImage Canvas 在粗略而简单的测试案例中。例如在表单上删除 TImage ,并将其添加到表单 OnCreate 事件:

Image1.Canvas.Font.Size := 10;
Caption := IntToStr(Image1.Canvas.TextWidth('FOO'));

Image1.Canvas.Font.Size := 24;
Caption := Caption + ' should be < ' + IntToStr(Image1.Canvas.TextWidth('FOO'));

对于较小的 Font.Size ,您将获得较小的初始 TextWidth

您最有可能在另一个Canvas(表单?)上设置 Font.Size 。与其他一些组件(例如 TPanel )不同, TImage 不会继承&#34;继承&#34;任何父控件或表单的字体

确保您的代码始终使用正确的画布