我正在使用delphi中的TImage组件的画布写入。 我正在使用Canvas.TextWidth,但是当我更改字符串的字体大小时,此函数Canvas.textWidth返回相同的值。
我正在研究Delphi xe6
答案 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;任何父控件或表单的字体。
确保您的代码始终使用正确的画布。