2005. szeptember 9., péntek
Create a transparent form which is still moveable
Problem/Question/Abstract:
How to create a transparent form which is still moveable
Answer:
You can achieve a transparency effect by creating a window region that includes only the controls on the form but not the background. Making a window transparent and still moveable:
procedure TForm1.Button2Click(Sender: TObject);
var
frmRegion, tempRegion: HRGN;
i: Integer;
Arect: TRect;
begin
frmRegion := 0;
for I := 0 to ControlCount - 1 do
begin
{ create a region for the control }
aRect := Controls[i].BoundsRect;
{ coordinates have to be window-relative, not client area relative }
OffsetRect(aRect, clientorigin.x - left, clientorigin.y - top);
tempRegion := CreateRectRgnIndirect(aRect);
{ merge the region with the "summary" region we are building }
if frmRegion = 0 then
frmRegion := tempRegion
else
begin
CombineRgn(frmRegion, frmRegion, tempRegion, RGN_OR);
DeleteObject(tempRegion);
end;
end;
{ create a region for the caption and menu bar and add it to the summary }
tempregion := CreateRectRgn(0, 0, Width, GetSystemMetrics(SM_CYCAPTION) +
GetSystemMetrics(SM_CYSIZEFRAME) +
GetSystemMetrics(SM_CYMENU) * Ord(Menu < > nil));
CombineRgn(frmRegion, frmRegion, tempRegion, RGN_OR);
DeleteObject(tempRegion);
SetWindowRgn(handle, frmRegion, true);
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése