将控件画成圆角的效果(Delphi)
2021-04-08 12:26
标签:clear otto with 设计软件 blog post create 效果 panel 将控件画成圆角的效果(Delphi) 标签:clear otto with 设计软件 blog post create 效果 panel 原文地址:https://www.cnblogs.com/zhangzhifeng/p/9086684.html
procedure TfrmTest.RoundControl(Control: TWinControl;arc1:Integer;arc2:Integer);
var
R: TRect;
Rgn: HRGN;
begin
with Control do
begin
R :=Control.ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, arc1, arc2);
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, -5, -5);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Control.Handle, rgn, True);
Invalidate;
end;
end;
只要在调用时传入控件的name和两个弧度就可以设置控件的圆角效果。
同时,要去掉TPanel控件的边线效果,只需将其BevelOuter设置成bvNone即可,其他有边线效果的控件设置无边线效果同TPanel一样。