您的位置:首页 > 编程语言 > Delphi

Delphi 代码实现窗口透明+圆角边框

2017-08-25 11:11 639 查看
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, ctlY + Height, Height, Height);
CombineRgn(fullRgn, fullRgn, ctlRgn, RGN_OR);  //RGN_OR并集

end;
end;
end;
SetWindowRgn(Handle, fullRgn, True);    //设置重绘窗口
end;
说明:CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, arc1, arc2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: