![]() |
ImageList Overlay Button
Hi,
habe nun viel gesucht und gefunden (hier sowie bei Google) aber es klappt alles nicht!!! Wie kann ich mit Imagelist zwei Icons übereinander legen und dieses dann im Button anzeigen lassen? Soweit so gut siehe Code, aber leider wird die Transparenz von den Icons nicht beibehalten! Nur wenn ich
Delphi-Quellcode:
verwende bleibt die Transparenz erhalten, aber da gibt es kein Overlay!
ImageList1_icon_64.GetIcon
Das ganze soll nachher im Button und im PopupMenü angezeigt werden, mit dem Popupmenü klappt schon aber auch dort keine Transparenz! Vllt. kann mir jmd dabei Helfen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var abitmap:TBitMap; OverlayIndex: Integer; OverlayBildIdx: Integer; begin abitmap:=TBitMap.Create; try abitmap.Width:=ImageList1_icon_64.Width; abitmap.Height:=ImageList1_icon_64.Height; // abitmap.PixelFormat := pf32Bit; // abitmap.TransparentMode := tmauto; // abitmap.Transparent := true; // abitmap.TransparentColor := clnone; OverlayIndex := 0; OverlayBildIdx := 1; ImageList1_icon_64.Overlay(OverlayBildIdx, OverlayIndex); ImageList1_icon_64.DrawOverlay(aBitMap.Canvas,0,0,0,0,true); PopupMenu1.Items.Items[0].ImageIndex:=-1; PopupMenu1.Items.Items[0].Bitmap:=aBitMap; imagelist1_icon_64.Add(abitmap, aBitMap); PopupMenu1.Items.Items[0].ImageIndex:=-1; PopupMenu1.Items.Items[0].Bitmap:=aBitMap; JvImageListViewer1.Images := ImageList1_icon_64; finally abitmap.Free; end; end; |
AW: ImageList Overlay Button
Hallo,
kann dir bei deinem aktuellen Problem leider nicht helfen, kann mich aber ab einen "ähnlichen" Thread erinnern. Vielleicht hilft es dir irgendwie... ![]() Gruß, Steku |
AW: ImageList Overlay Button
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz