Witam serdecznie, otóż mam taki mały problem próbuję dodać ikonę do tray'a w formacie *.png lecz z pełną transparencją
napisałem sobie coś takiego dla testu:
uses
PngImage
...
procedure TForm1.Button1Click(Sender: TObject);
var
ImageList: TImageList;
Bitmap: TBitmap;
Icon: TIcon;
PNG: TPngImage;
begin
PNG := TPngImage.Create;
PNG.LoadFromFile(WideString(ExtractFilePath(Application.ExeName) + 'test.png')
);
Bitmap := TBitmap.Create;
Icon := TIcon.Create;
try
Bitmap.Assign(PNG);
ImageList := TImageList.CreateSize(Bitmap.Width, Bitmap.Height);
try
ImageList.AddMasked(Bitmap, Bitmap.TransparentColor);
ImageList.GetIcon(0, Icon);
TrayIcon.Icons := TImageList.Create(Self);
TrayIcon.Icons.Clear;
TrayIcon.Icon.Assign(Icon);
TrayIcon.Icons.AddIcon(Icon);
TrayIcon.IconIndex := 1;
TrayIcon.Visible := true;
TrayIcon.Animate := true;
finally
ImageList.Free;
end;
finally
Bitmap.Free;
PNG.Free;
Icon.Free;
end;
end;
oczywiście działa jednak nie do końca
prawidłowo powinno to wyglądać jak ikona po prawej a po lewej jest ikona dodawana przez e mnie
rozumiem że to dla tego że konwertuje png do bitmapy a potem przypisuje jako ikona i transparencja jest wytracana
czy może potrafi mi ktoś pomóc w poprawnym wyświetleniu tej ikony ??
a może istnieje inne lepsze rozwiązanie ??
Pozdrawiam