procedure TfrmRemoteData.DoInvisible; //透明
var
control: TControl;
index, margin, X, Y, ctlX, ctlY, i: Integer;
fullRgn, clientRgn, ctlRgn: THandle;
begin
margin := (Width - ClientWidth) div 2;
fullRgn := CreateRectRgn(0, 0, Width, Height); //创建总裁剪区域
X := margin;
Y := Height - ClientHeight - margin;
clientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(fullRgn, fullRgn, clientRgn, RGN_DIFF); //合并区域,RGN_DIFF差集
for index := 0 to ControlCount - 1 do //遍历控件
begin
control := Controls[index];
if (control is TWinControl) or (control is TGraphicControl) then
with control do
begin
if Visible then
begin
ctlX := X + Left;
ctlY := Y + Top;
// ctlRgn := CreateRectRgn(CtlX, CtlY, CtlX + Width, CtlY + Height);
ctlRgn := CreateRoundRectRgn(ctlX, ctlY, ctlX+ Width, c
Delphi 代码实现窗口透明+圆角边框
最新推荐文章于 2019-09-02 15:23:00 发布