Thema: Delphi ImageList Overlay Button

Einzelnen Beitrag anzeigen

Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ImageList Overlay Button

  Alt 10. Dez 2014, 12:34
Ich hatte das Problem auch längere Zeit, dass bei dem erzeugten Overlay-Icon die Transparenz fehlte.
Nach ein paar weiteren Versuchen habe ich eine Lösung gefunden, die für mich funktioniert und ein transparentes Overlay-Icon in der Traybar anzeigt: der temporäre Bitmap-Canvas muss zuerst mit einem psClear-Style übermalt werden.

Delphi-Quellcode:
procedure TForm1.CreateOverlayTrayIcon(iBasis, iOverlay: Integer);
var
  aBitmap: TBitMap;
  OverlayIndex: Integer;
begin
  aBitmap := TBitMap.Create;
  try
    //Temp. Bitmap transparent bemalen
    aBitmap.Width := ilOverlayIcons.Width;
    aBitmap.Height := ilOverlayIcons.Height;
    aBitmap.Canvas.Pen.Style := psClear;
    aBitmap.Canvas.Rectangle(0, 0, aBitmap.Width+1, aBitmap.Height+1);

    //Basis und Overlay auf Bitmap zeichnen
    OverlayIndex := 0;
    ilOverlayIcons.Overlay(iOverlay, OverlayIndex);
    ilOverlayIcons.DrawOverlay(aBitmap.Canvas, 0, 0, iBasis, OverlayIndex, True);

    //Bitmap zu Imageliste hinzufügen
    ilTrayIcon.Clear;
    ilTrayIcon.Add(aBitmap, nil);

    //Image in TrayIcon neu zeichnen
    TrayIcon1.IconIndex := -1;
    TrayIcon1.IconIndex := 0;
  finally
    aBitmap.Free;
  end;
end;
Stefan
  Mit Zitat antworten Zitat