Delphi.cz

Český portál Delphi

VCL High DPI Image List

V Delphi Rio byla přidána podpora pro VCL multi resolution imagelisty.

V podstatě se jedná o dvě spolupracující komponenty:

  • TImageCollection - udržuje vlastní multi resolution bitmapy
  • TVirtualImageList - podle DPI zprostředkovává pohled na TImageCollection

Klíčové vlastnosti:

  • List je kompatibilní s TImageList (včetně HIMAGELIST handle), tj. kdekoliv kde se dal použít TImageList můžete použít TVirtualImageList
  • List škáluje podle DPI formuláře, tj. list musí být na formuláři kde se použije
  • Podpora pro konverzi TImageList na nový list, umí přetáhnout data z původního image listu
  • podpora pro hromadný import v různých velikostech
  • Chybějící rozlišení dopočítává

Začneme s TImageCollection. Přidáme někam, nejlépe do datamodulu TImageCollection - ten ponese fyzicky data. Ostatní pak je jen "View" na tyto data. Všimněte si, že jsem přidal 5 ikon a jen v jednom rozlišení. Samozřejmě můžu přidat více velikostí, ale přišlo mi, že dopočet z vyššího rozlišení zafunguje slušně.

TImageCollection

V horním rohu je Add, které umí najednou přidat více ikon v různých velikostech. Mějme např. v adresáři

  • money-16x16.png
  • money-64x64.png
  • vendors-search-16x16.png
  • vendors-search-64x64.png

Po provedení importu rozhodí wizard 4 ikony na dvě po dvou velikostech.

multiadd

Nyní máme TVirtualImageList, nastavíme u něj TImageCollection a zobrazíme jeho wizard a stiskem Add (pozor na property AutoFill) vložíme odkazy na ikony z ImageCollection.

TVirtualImageList

Zároveň vidíme preview v daných rozlišení. Způsob dopočítávání rozlišení určuje property TImageCollection.InterpolationMode. Přenos ikon z existujícího imagelistu je možný přes popup menu u TImageCollection. Už jen přenosem existujících ikon dostaneme bonus v tom, že image list bude automaticky resamplovat staré ikony.

Výsledek

Toolbar při 150%

Původní ImageList, 16x16 pixelů

sample

TVirtualImageList, 16x16 pixelů - původní ikony

sample

TVirtualImageList - automatický resample z lepších ikon

sample

Datum: 2019-02-28 11:57:00 Tagy: vcl

Novinky v Delphi