조희문 님이 쓰신 글 :
: 패널의 바탕을 투명하게 주어서 패널 아래의 배경그림이 보이게
: 할수 있는 방법이 있는지요???
: 그럼 수고하세요!
:
이렇게 하면 됩니당.. 머. 인자값을 폼으로 주면 패널뿐만 아니라 폼두 됩니당.^^
procedure TForm1.Button2Click(Sender: TObject);
begin
ClearPanel(TPanel(panel1));
end;
procedure TForm1.ClearPanel(var panel : TPanel);
var I : Integer;
FullRgn, ClientRgn, ControlRgn : THandle;
Margin, MarginX, MarginY, X, Y : Integer;
begin
Margin := (panel.Width - panel.ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, panel.Width, panel.Height);
MarginX := Margin;
MarginY := panel.Height - panel.ClientHeight - Margin;
ClientRgn := CreateRectRgn(MarginX, MarginY, MarginX + panel.ClientWidth,
MarginY + panel.ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
for I:=0 to panel.ControlCount-1 do begin
X := MarginX + panel.Controls[I].Left;
Y := MarginY + panel.Controls[I].Top;
ControlRgn := CreateRectRgn(X, Y, X + panel.Controls[I].Width,
Y + panel.Controls[I].Height);
CombineRgn(FullRgn, FullRgn, ControlRgn, RGN_OR);
end;
SetWindowRgn(panel.Handle, FullRgn, True);
end;
|