// 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;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke