gpt4 book ai didi

delphi - 为什么我需要指定 Canvas 的字体来更改 Delphi 2009 中的字体大小?

转载 作者:行者123 更新时间:2023-12-03 14:59:40 24 4
gpt4 key购买 nike

我有一个 TPanel 的子类,我非常非常喜欢它,但令我懊恼的是,在执行此操作时,字体似乎从未采用:

font.size := AFontsize;
font.style := AFontStyle;
font.color := AFontColor;

但是当我这样做时它确实改变了:

Canvas.Font.Assign(Font);

在 Delphi 7 中我不必这样做,但在 2009 年我似乎必须这样做。这是怎么回事?

最佳答案

如果使用 Canvas 在面板中绘制文本,则必须设置 Canvas 字体。

某些组件和/或某些 Delphi 版本可以有意或作为先前绘画任务的副作用设置 Canvas.Font,但您不应该依赖它。

因此建议在开始绘制文本之前执行Canvas.Font := Font;

这同样适用于 Canvas.BrushCanvas.Pen

type
TMyPanel = class(TCustomPanel)
protected
procedure Paint; override;
end;

procedure TMyPanel.Paint;
var
r: TRect;
begin
r := ClientRect;

Canvas.Brush.Color := Color;
Canvas.FillRect(r); // fill the background

Canvas.Font := Font;
DrawText(Canvas.Handle, 'Sample Text', -1, r, DT_SINGLELINE or DT_CENTER or DT_VCENTER or DT_EXPANDTABS or DT_NOPREFIX);
end;

关于delphi - 为什么我需要指定 Canvas 的字体来更改 Delphi 2009 中的字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com