Delphi Canvas.TextWidth不';t返回正确的值

Delphi Canvas.TextWidth不';t返回正确的值,delphi,firemonkey,Delphi,Firemonkey,我正在用delphi编写TImage组件的画布。 我正在使用Canvas.TextWidth,但是当我更改字符串的字体大小时,这个函数Canvas.TextWidth返回相同的值 我正在使用Delphi xe6我怀疑您在代码中的某个点上使用了错误的画布,因为在一个粗糙而简单的测试用例中,TImage画布似乎没有意外的行为。e、 g.在表单上删除一个TImage,并将其添加到表单OnCreate事件中: Image1.Canvas.Font.Size := 10; Caption := IntTo

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


我正在使用Delphi xe6

我怀疑您在代码中的某个点上使用了错误的画布,因为在一个粗糙而简单的测试用例中,TImage画布似乎没有意外的行为。e、 g.在表单上删除一个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'));
Image1.Canvas.Font.Size:=10;
标题:=IntToStr(Image1.Canvas.TextWidth('FOO');
Image1.Canvas.Font.Size:=24;
Caption:=Caption+'应该是<'+IntToStr(Image1.Canvas.TextWidth('FOO'));
对于较小的Font.Size,您将获得较小的首字母TextWidth

很可能您正在另一个画布(表单?)上设置Font.Size。与其他一些组件(例如TPanel)不同,TImage不会“继承”任何父控件或窗体的字体


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

请包括您正在使用的代码的基本部分。根据我的经验,大多数情况下,这样的错误是由以下原因之一造成的:要么您使用了错误的画布,要么您将错误的字符串传递给了功能。如果您不提供源代码,我们无法帮助您检测错误。(如果你纠正你的问题,我愿意取消我的否决票。)我不能使用相关按钮,但这里有一个有用的答案:。这对我来说是有效的。而且,在帖子中加入一个问题也很好。没有问题,所以答案是“啊,我明白了——非常有趣”: