[Delphi] ImageList i przezroczystość

0

Witam.
Od kilku godzin męczę się nad prawidłowym dodaniem ikon do ImageList. Problemy są dwa:

1). TPicture:

var
  aImg: TPictrure;
begin
  aImg := TPicture.Create;
  try
    aImg.LoadFromFile(Plik);
    ImageList.AddIcon(aImg.Icon);
  finally
    aImg.Free;
  end;
end;

Jak imagelist przypnę pod TPageControl i na zakładce ustawie index tej ikony to zamiast ładnej przezroczystości mam jakiś czarny cień. Jak tą samą ikonę załaduję do komponentu TImage to wszystko wygląda tak jak powinno.

  1. TPngObject (konwertowanie do BMP z demosów tego komponentu):
 var
  aPNG: TPNGObject;
  aBMP: TBitmap;
  aID: Integer;
begin
  aPNG := TPNGObject.Create;
  aBMP := TBitmap.Create;
  try
    aPNG.LoadFromFile(Plik);
    aBMP.Assign(aPNG);
    aID := ImageList.Add(aBMP, nil);

   ImageList.GetIcon(aID, Form1.Icon);
  finally
    aPNG.Free;
    aBMP.Free;
  end;
end;

Tutaj za to "niby" jest jakaś transparencja, ale ikona na formie jest jakaś kanciasta - tam gdzie jest jednolity kolor maski to jest całkowita przezroczystość, ale jak jak zaczynają się jakieś cienie ikony to nie ma w ogóle przezroczystości, jest szare tło i na nim cień.
Ktoś może mi wytłumaczyć co i jak mam robić? Jakie parametry ustawić w ImageList i jak w bitmapie ustawić transparent, przekopałem forum ale kombinacje z TransparentColor, TransparentMode, AddMasked itp nie pomaga. Ja się poddaje, liczę na waszą pomoc.

0

Upewnij się, że używany przez Ciebie ImageList w ogóle obsługuje ikony 32 bitowe.

ImageList niepoprawnie wyświetla ikonki XP. Co robić

0

Dzięki Szczawik, problem 2 rozwiązany :) Chociaż mam pare pytan:

  1. ImageList.Handle := ImageList_Create(0, 0, ILC_COLOR32 or ILC_MASK, 0, 0);
    Czy to oby nie powoduje wycieku pamięci? W końcu wskaźnik jest zastępowany innym. Czy to po prostu przy niszczeniu formy zostanie stary imagelist zniszczony po forma jest jego parentem?
  2. W podanym FAQ jest napisane że będzie działać tylko na XP, ale Vista chyba też obsługuje 32-bitowe ikony?

Pozostał jeszcze problem z pkt. 1

0
  1. Sprawdź samemu w źródłach bibliotek
  2. Art pochodzi z 2004 - wtedy nie było Visty
0

Sorry , rozwiązał się pkt 1, pozostał pkt 2 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1