为什么我需要在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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |