घटक को बनाए रखने के दौरान फॉर्म पारदर्शी कैसे बनाएं?
मुझे ऐसे कार्यक्रम को बनाने की ज़रूरत है जिसमें एक रूप है जिसमें पारदर्शी क्षेत्र के साथ पीएनजी छवि हो। फॉर्म अदृश्य होना चाहिए, जबकि छवि दृश्यमान रहनी चाहिए और पारदर्शी क्षेत्र पारदर्शी रहना चाहिए। समस्या छवि पारदर्शिता है। इस मामले में, मुख्य रूप पारदर्शी, अदृश्य है, जबकि सभी घटक/नियंत्रण दिखाई देते हैं। लेकिन, पीएनजी छवि का पारदर्शी क्षेत्र पारदर्शिता नहीं रखता है। पारदर्शिता कैसे रखें?
procedure MakeTransparent;
var
AControl: TControl;
A, Margin, X, Y, CtlX, CtlY: Integer;
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);
for A := 0 to ControlCount - 1 do
begin
AControl := Controls[A];
if (AControl is TWinControl) or (AControl is TGraphicControl) then with AControl do
begin
if Visible then
begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn(CtlX, CtlY, CtlX + Width, CtlY + Height);
CombineRgn(FullRgn, FullRgn, CtlRgn, RGN_OR);
end;
end;
end;
SetWindowRgn(Handle, FullRgn, True);
end;
procedure UndoTransparency;
begin
FullRgn := CreateRectRgn(0, 0, Width, Height);
CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);
SetWindowRgn(Handle, FullRgn, True);
end;
बस एक पोक :-) क्या आप सुनिश्चित हैं कि छवि पहले स्क्रीनशॉट पर वास्तव में पारदर्शी थी? – TLama
100% पारदर्शी :) –
आप एक पारदर्शी रूप नहीं बना रहे हैं, आप फ़ॉर्म के आकार को बदल रहे हैं। इसके बजाय फॉर्म के 'रंग',' पारदर्शी रंग 'और' पारदर्शी रंगवृत्त 'गुणों का उपयोग करें और एक' टीआईएमएजी 'में एक पीएनजी लोड करें और आप कर चुके हैं! –