如何实现TLabel文字黑色、下划线红色的异色设置?
如何给TLabel设置与文字不同颜色的下划线?
TLabel原生没有单独设置下划线颜色的属性,但可以通过两种方式实现需求:
方法1:自定义自绘控件(更灵活)
继承TLabel并重写Paint方法,手动分开绘制文字和下划线:
type TColorUnderlineLabel = class(TLabel) private FUnderlineColor: TColor; protected procedure Paint; override; public constructor Create(AOwner: TComponent); override; property UnderlineColor: TColor read FUnderlineColor write FUnderlineColor; end; constructor TColorUnderlineLabel.Create(AOwner: TComponent); begin inherited; FUnderlineColor := clRed; // 默认下划线红色 end; procedure TColorUnderlineLabel.Paint; var TextBounds: TRect; TextHeight: Integer; begin // 先绘制黑色文字,关闭自带下划线 Font.Underline := False; inherited Paint; // 计算下划线位置:在文字底部下方1像素处 TextBounds := GetTextBounds; TextHeight := Canvas.TextHeight(Caption); TextBounds.Top := TextBounds.Top + TextHeight + 1; // 设置画笔颜色并绘制下划线 Canvas.Pen.Color := FUnderlineColor; Canvas.Pen.Width := 1; Canvas.MoveTo(TextBounds.Left, TextBounds.Top); Canvas.LineTo(TextBounds.Right, TextBounds.Top); end;
使用时,把这个自定义控件添加到组件面板,拖到窗体后,直接设置Font.Color为黑色,UnderlineColor为红色即可。
方法2:叠加两个TLabel(零代码快速实现)
不需要编写代码,用两个普通TLabel配合:
- 上层Label:设置
Caption为目标文本,Font.Color=黑色,关闭下划线,正常摆放位置。 - 下层Label:设置
Caption和上层完全一致,Font.Color=红色,仅开启下划线,微调Top属性让它的下划线刚好对齐上层文字的底部。
注意:如果需要动态修改文本,要同时更新两个Label的Caption,否则会出现内容不一致的问题。
内容的提问来源于stack exchange,提问作者Martin Kakhuis
相关产品推荐
相关产品推荐

