Pet*_*ner 6 delphi fonts delphi-2009
我有一个TPanel的子类,我非常非常喜欢我的懊恼,这样做的字体似乎永远不会采取:
font.size := AFontsize;
font.style := AFontStyle;
font.color := AFontColor;
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时它会改变:
Canvas.Font.Assign(Font);
Run Code Online (Sandbox Code Playgroud)
我没有在Delphi 7中这样做,但我似乎必须在2009年这样做.这是什么交易?
如果使用画布在面板中绘制文本,则必须设置画布字体.
某些组件和/或某些Delphi版本可以有意或者作为先前绘制任务的副作用设置Canvas.Font,但您不应该依赖它.
所以建议Canvas.Font := Font;在开始绘制文本之前先做.
这同样适用于Canvas.Brush和Canvas.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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |