加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:07:38 所属栏目:大数据 来源:网络整理
导读:我有一个TPanel的子类,我非常非常喜欢我的懊恼,这样做的字体似乎永远不会采取: font.size := AFontsize;font.style := AFontStyle;font.color := AFontColor; 但是当我这样做时它会改变: Canvas.Font.Assign(Font); 我没有在Delphi 7中这样做,但我似乎必须
我有一个TPanel的子类,我非常非常喜欢我的懊恼,这样做的字体似乎永远不会采取:
font.size := AFontsize;
font.style := AFontStyle;
font.color := AFontColor;

但是当我这样做时它会改变:

Canvas.Font.Assign(Font);

我没有在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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读