// Es kam eine
Mail-Anfrage, wie man sicher die Transparenz eines
// Icons feststellen kann. Mir ist nichts besseres eingefallen als
// der folgende Code:
// Getestet mit RS 10.4 unter Win11
function isIcoTransparent(ic: TIcon): Boolean;
var
y: Integer;
msk: TBitmap;
info: TIconInfo;
function find0(y: Integer): Boolean;
var
x: Integer;
pb: PByte;
begin
Result := False;
for x := 0 to pred(msk.Width) do
begin
pb := msk.ScanLine[y];
if (pb^ > 0) then
begin
Result := True;
Break;
end;
end;
end;
begin
Result := False;
msk := TBitmap.Create;
GetIconInfo(ic.handle, info);
msk.handle := info.hbmMask;
msk.PixelFormat := pf1bit;
for y := 0 to pred(msk.Height) do
begin
if find0(y) then
begin
Result := True;
Break;
end;
end;
msk.Free;
end;
|