如何在Delphi FireMonkey中为TRectangle设置圆角?
Delphi FireMonkey实现带圆角的TRectangle按钮(类似CSS border-radius效果)
完全可以实现,FireMonkey的TRectangle组件原生支持圆角设置,逻辑和CSS的border-radius完全对应,具体操作如下:
一、设计器可视化设置
- 从组件面板拖入
TRectangle到目标容器(窗体、布局等) - 在Object Inspector中找到CornerRadius属性:
- 直接设置主数值:所有角应用统一圆角,对应CSS的
border-radius: [数值]; - 展开CornerRadius的子属性,分别设置
TopLeft、TopRight、BottomLeft、BottomRight的数值,可实现不同角的差异化圆角,对应CSS的border-radius: 左上 右上 右下 左下;语法
- 直接设置主数值:所有角应用统一圆角,对应CSS的
二、代码动态设置
如果需要在运行时调整圆角,可通过以下代码实现:
// 设置所有角统一圆角 Rectangle1.CornerRadius := 12; // 设置四个角不同的圆角值 Rectangle1.CornerRadius.TopLeft := 8; Rectangle1.CornerRadius.TopRight := 16; Rectangle1.CornerRadius.BottomLeft := 16; Rectangle1.CornerRadius.BottomRight := 8;
三、完善按钮交互效果
若要把TRectangle做成可点击的按钮,还可以补充以下操作:
- 给TRectangle添加
OnClick事件,编写点击触发的业务逻辑 - 通过
OnMouseEnter和OnMouseLeave实现hover状态切换:
procedure TGameForm.RectangleStartMouseEnter(Sender: TObject); begin (Sender as TRectangle).Fill.Color := $FFD0D0D0; // 鼠标移入时的填充色 end; procedure TGameForm.RectangleStartMouseLeave(Sender: TObject); begin (Sender as TRectangle).Fill.Color := $FFE8E8E8; // 鼠标移出时的填充色 end;
- 可搭配
TLabel组件放在TRectangle上方,添加按钮文字(比如“开始”)
关于CSS border-radius的对应说明
CSS的border-radius属性用于为元素添加圆角,支持单值统一设置、多值差异化设置单个角,FireMonkey的TRectangle CornerRadius属性完全匹配这一逻辑:
- 单值设置:对应TRectangle的CornerRadius主属性,四个角圆角一致
- 多值设置:对应TRectangle CornerRadius的四个子属性,分别控制四个角的圆角大小
内容的提问来源于stack exchange,提问作者liansa111
相关产品推荐
相关产品推荐

